Refactor travis build to use clang's sanitizers

- Refactor src/CMakeLists.txt to enable independent builds of the executable
  and the shared library
- Travis will now run two build steps:
  - A normal build of a shared library for unit testing(in parallel with gcc)
  - A clang build with some sanitizers enabled for integration testing.
- Valgrind configuration removed

After these changes travis will run much faster, while providing valgrind-like
error detection.