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
  - A clang build with some sanitizers enabled for integration testing.
- Valgrind configuration removed

After these changes, travis will run much faster than with valgrind, while
providing similar error detection.