cmake: Boost is now marked required.
cmake: Added threads as package.
cmake: Small update to third-party.cmake.

- Updated comment descrbing s_third_party_root's intended usage.
cmake: Simplified layout in third-party.cmake.

- Separated deps into required and optional.
- Ordered req before opt.
cmake: Small grammar fix in comment.
cmake: Relaxed req version to 2.8.

We only ever required these point releases because of how we build
boost. There's a bug with external projects that would treat our
local .bjam build target itself as an external project.

Since we're not building it, we don't need to spec that version.
cmake: c++11 and additional warnings enabled.

- Added defs.cmake to describe our build params.
- Added compilers.cmake and compilers subdir to configure each
compiler.
cmake: Prefer pthreads when other libs exist.
cmake: Env now detected.
cmake: Added module for automatic tests.
cmake: Automatic testing update.

- Test exes are always created when gmock is available.
- Tests are only run automatically when b_enable_automatic_testing
is enabled.
- If gmock is available, tests can always be run manually.
cmake: Automatic testing update.

- Xcomp builds can now run automatic tests if an emulator is available.
- mswin xcomp uses wine, if available.
cmake: third-party included before we add warnings as errors.
cmake: Compiler id is now printed when unidentified.
cmake: s/detect/identify when determining target.
cmake: Made identify errors more verbose.

- When errors occur during target identification, they'll print out
what they were using to identify.
cmake: Added ton of gcc-compat warnings.

These will very likely change. 1) They are incredibly specific and
probably far too constrictive, 2) I haven't tested them against
clang, which will almost certainly complain about a few of these.
cmake: We no longer set -ggdb. That's set by the toolchain.
cmake: Find() now prefers static libs, when possible.
cmake: Added toolchaing for linux-x86-64-gcc.