Move functions from os/fs.c into path.c

Move unit tests from os/fs.moon to path.moon
Move and adapt `os_get_absolute_path` unit tests to `vim_FullName`

* Add two new unit tests to `vim_FullName`
* Make `os_get_absolute_path` static
Change prefix from `os_*` to `path_*`
Move exe functions back to os/fs.c
vim-patch:7.4.186

Problem:    Insert in Visual mode sometimes gives incorrect results.
            (Dominique Pelle)
Solution:   Remember the original insert start position. (Christian Brabandt,
            Dominique Pelle)

https://code.google.com/p/vim/source/detail?r=4d12112c5efae071aecbeed1a7196f18950457b3
Fix broken build due to unit test include order

 Commit 4348d1e6f74a87af55c6c01e7a0cb292e9dec114
 introduced a bug that breaks the unit tests unless
 they run in a certain order. Both path.moon
 and os/fs.moon tries to include the same Enum, which
 fails since ffi.cdef can only include definitions once.

 This solves the bug by using Lua variables instead of
 ffi.cdef Enums.
vim-patch:7.4.187

Problem:    Delete that crosses line break splits multi-byte character.
Solution:   Advance a character instead of a byte. (Cade Foster)

https://code.google.com/p/vim/source/detail?r=a1c07956171a133583df42627d3498f935e59988
Replace `alloc_check` by `xmalloc`

`alloc_check` is just a wrapper around xmalloc, so we can remove it and use
xmalloc directly. ref #487 / #488

The call was replaced in the following files:

- ex_cmds.c
- misc1.c
- ops.c
Remove more OOM error handling code

From the functions:

 - ExpandBufnames
 - buf_modname()
 - do_autocmd_event()
 - ff_create_stack_element()
 - ff_get_visited_list()
 - ins_complete()
 - msg_show_console_dialog()
 - prt_find_resource()
 - vim_findfile_init()

TODO: refactor msg_show_console_dialog() to make sure it doesn't ever return
NULL.
Remove OOM error handling code after calls to diff_alloc_new()
Remove OOM error handling code after calls to transstr()

transstr() doesn't return NULL anymore.
Remove OOM error handling code after calls to mf_hash_grow()
Remove OOM error handling code after ga_grow() calls
No error condition in foldInsert()
alist_add_list() doesn't return -1 anymore
No error condition in get_arg_list()
No error condition in store_loop_line()
No error condition in push_current_state()
port vim_mkdir, mch_rmdir and mch_remove to libuv
removed mch_remove macro