cmake related changes.
* Add the toolchain files for building using gcc or llvm/clang.
  E.g.
  mkdir build
  cd build
  cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/llvm-toolchain.cmake -DCMAKE_INSTALL_PREFIX=install ..
  make install # install to build/install
* Some small changes to make both gcc and llvm build, although there are still some warnings in llvm.