Lots of miscellaneous changes

See commit messages for more details: The most interesting

1. Allow standard exceptions to be used directly with \<base/thrower.h>. Thanks @mpark for how to test for a function using SFINAE (Although my usage should be checked for simplicity / correctness)
2. Factor out a posix wrapper to base (getcwd)
3. Add to the STL wrappers