Refactor travis build to use clang's sanitizers

- Valgrind configuration removed
- Fix errors reported by the undefined behavior sanitizer
- 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.

After these changes travis will run much faster, while providing valgrind-like
error detection.
refactored logic from init_users() into mch_get_usernames()
moved mch_get_user_name() and mch_get_uname() into os/users.c
removed get_user_name() and replaced calls with mch_get_user_name()
refactored part of expand_env_esc() into mch_get_user_directory()
Fix: Use an assert to make sure, an error message can be copied into buffer buf in mch_dirname().

The copied error message is NUL-terminated.