This mostly is cleanup, with fewer alternative methods and more standard syntax, avoiding the use of the namespace all the time. Validators are simpler and are added through `->check()`.
Defaults are automatic, and can be specified with a final arg to the options.
Expected arguments and required arguments are now accessed through a pointer to option.
Option now can be checked as a bool to see if the argument was passed.
Errors have better organisation.