Base changes

This lays the groundwork for the new JHM implementation (PR for that shortly).

Adds / cleans up a number of different utility functions in \<base>
Unfortunately according to 27.7.3.6.4 `Requires: s shall not be a null pointer.` you're right here. I sort of wish the library would just check for null pointers and exit fast.... I might just add an overload for unique_ptr to operator<< that makes it work like <base/opt.h> in terms of how it prints. Since I have a feeling we'll want to print more optionals in the future.