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.
Remove remaining hangul-related code
add .vimrc and src/.ycm_extra_conf.py
Include <stdint.h> in types.h
Replace UINT32_T by uint32_t
Remove useless sizeof(uint32_t) == 4 test
Extract indent_c.c from misc1.c
Adapt include guards to the style guide
Use include paths relative to src/

As described in Google's style guide, the basis for Neovim's

> All of a project's header files should be listed as descendants of the
> project's source directory without use of UNIX directory shortcuts .
> (the current directory) or .. (the parent directory).

Add src as an include directory to facilitate this.
Moved more functions from misc1.c to indent.c
Add unit tests for mch_[gs]etperm.

Use preprocessor trick proposed by @mahkoh to import 'defines' like
S_IRUSR.
Move and refactor mch_[gs]etperm to os/fs module.
Revive vim_fname (-> os_file_exists); fix misuse of mch_getperm.

* Move vim_fname from misc1 to os/fs:os_file_exists.
* Add unit tests for os_file_exists.
* Replace misuse of mch_getperm with os_file_exists.
Unfinished attempt to prevent duplicating definitions
Merge branch 'master' into luaviml