Did a full public surface API pass so ensure all public APIs are documented.  I marked some previously public items as internal where appropriate.  That should not happen again.  There were also a few bug fixes, the most interesting was that enum values were being treated as case sensitive by default which should not have been the case.  I also added a new overload to the ArgValidator so that validators can choose to be run even if the user didn't specify the argument on the command line (useful for [ArgRequired] types of scenarios.