cmake: Automatic tests only run after their deps change.

Previously, tests ran after every build, for every target, because we were
adding the tests using add_custom_command. We now use add_custom_target.
cmake: Bashed noisy trace.
cmake: osx-x86-(32|64)-clang no longer identifies as 'Gnu'.
Shelled env lib.
Roughed in semver preprocessor macros.
cmake: No longer define _GLIBCXX_DEBUG for gcc debug.

gtest's static registration fires off before main and uses stdlib
containers. Apparently some part of the debug containers option
requires init out of main, too, because it crashes outside of main
under gtest in stdlib.

Useful as debug containers may be, if we can't get around a crash,
we can't use them.
cmake: Bashed silliness in axiom-env.

axiom-env had a dependency on an undefined boost project. I'm not sure
how this even built. Meh. Changed it to just use boost's include.
Shelled env test.
env: Added test for semver.
cmake: Automatic tests with an emulator now work.

Somehow, I modified the parameters we spec when defining the run
command for unit tests in both native and emu builds, but I only
changed the name of the command called in the native version.

Both now use the correct command.
env: Bashed namespace decl in env.hpp.

These modules are all preprocessor.
env: Added comment block.

It describes how to get a list of all preprocessor defines used by
gcc and clang.
env: Shelled os identification module.
env: Defined known operating systems.
Changed references to macos to osx.
env: Preprocessor enums are now 1-based.

Evaluating an undefined preprocessor identifier results in 0. We typically
force this to be a warning and error out, but we can't always guarantee
everything will be built with our cmake settings.

If we enumed starting at 0, we could end up with false equivalencies.
Starting at 1 easily solves this.
cmake: Reordered os detection alphabetically.
env: s/MMC/AXIOM/g.
env: Added error conditions when os isn't detected.
env: Defined complete os string.