use standard argparse error handling for consistency
This just ensures that we get consistent appearance and exit status for
all usage errors, even when they are raised when executing a subcommand.
(cherry picked from commit 080d9599f01978ad554658c6a5da1642a383b969)
Change-Id: I29e59f8d5877c4365d575fb79518605d1c6f887d