modified usage/help messages to be inline with argparse

previous implementation was hack
added ability for commands to raise SystemExit to exit the shell
correctly exiting with return code