Breaking out argument parsing into separate func

while trying to balance a small diffstat with minimizing how many
variables are passed between `_parse_argv` and `_entry_point`.  This
involved reluctantly adding an `Options` class to contain the varying
option values as well as some error classes to handle the options that
abort execution.  Splitting this out is going to be interesting no
matter what, but I hope this doesn't qualify as a mess :-)
Passing around a tuple instead of an object

which appears to have improved translation, and will hopefully make the
patch cleaner.
Changes per feedback

including explicit inclusion of "message" attribute on custom exceptions
and rearranging functions.
Merge pull request #379 from modcloth/extract-main-arg-parsing

Extract main arg parsing