Move from optparse to argparse
argparse is the way of the future. Also, it has support for doing much more clever things, like proper support for subcommands.
Ultimately we'll want to do input checks, subcommands, and more, but for step 1: just get it working with argparse.
Needed fixes for now
- fix ordering issue with positional and non-positional arguments
For the future