Add named parameter for default value
Fix bug with some command line options not overriding
Add missing const and noexcept qualifiers to lines
Made program name configurable rather than assuming it's argv[0]
Redesigned exception to be invalid_arg_get rather than arg_not_found
Add support for required arguments