runner: Use argparse instead of optparse
py3: runner: Switch to python3-compatible print syntax
py3: runner: Drop deprecated raise syntax
py3: runner: Add a python2+3 compatibility shim for input()
runner: Get rid of custom argument parsing code, use argparse instead

argparse has a wonderful subcommands feature which does everything we
want it to do, and more.
runner: Use a real subcommand for ./runner.py start