Arg parsing
Add a simple wrapper around getopt_long to give an interface for argument parsing that:
- Parses options
- Auto generates help/usage information
- Documents defaults
This was put together to remove the skew that often arises between the options that the program accepts and the documentation.