Make script portable across Python versions

Support both Python 2 and 3.
Add another unit test to mch_can_exe.
Move mch_can_exe, executable_file to os/fs.c.

* Rename executable_file to is_executable.
Declare is_executable as static and remove its unit tests.

Testing the public interface mch_can_exe should suffice. Every former
test of is_executable has a counterpart in the tests of mch_can_exe.
Thus we can keep private things private.
Simplify mch_can_exe extracting is_executable_in_path.
Move definition of helper function below their usage.
Remove unused return values.
Fix bugs, clean code, add tests.

* Add const specifiers, update comments, add assert.
* Move os_unix.moon tests to os/fs.moon + clean tests.
* Add uv_fs_req_cleanup call.
* Add tests with absolute paths to mch_isdir.
* Add to_cstr to test/unit/helpers.moon and fix respective unit tests.
use more verbose output type for unittests on travis
Change neo* configurations to n* configurations
Extract pos.h from structs.h

This will make it much simpler to move the other types in structs.h
which depend on `pos_T` and `lpos_T`.
Move exarg_T and cmdarg_T from structs.h to normal.h
Extract cursor_shape.c from misc2.c and types/consts from structs.h
Remove CURSOR_SHAPE #ifdef tests

See issue #333
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.