Improved GCC compiler and C++98 language support.

Many source files now compile properly with GCC 4.4 (will probably
ensure things work with GCC 4.2 at minimum). GCC is still having
trouble on a few source files, but it's an overall improvement.

Additional changes:

- Added C++11 atomics for x86/x64 for pre-C++11 compilers. It
  works with MSVC11, but it still needs additional work to get it
  behaving in GCC.
- Decided to streamline the assert mechanism in cassert.hpp,
  removing printf style formatting, as GCC and MSVC treat variable
  argument macros differently causing the mechanism to break in one
  compiler and not the other. The recommended way to printing debug
  info will be strictly through the message logging subsystem in
  log.hpp.
- Added support for GCC builtin bitwise operations.
- Added C11-threads interface overtop of pthreads for POSIX
  platforms.
- Added (s)list_clear_deallocate, (s)list_erase_deallocate, and
  (s)list_unlink_deallocate functions which make it easier to
  remove and deallocate list nodes when lambda functions are not
  available.