Basic working prototype

All this does is parse the `ARGV` for you and provide a list
of args and an option hash. It does no handling for you, no
validation, no help messages, no nothing except parse data.

For the common `-h` and `-v` help/version flags, it will throw
and your CLI should catch and handle this case.

It provides a clean option definition API for adding options to
parse.