Define special key for asynchronous events

K_EVENT/KE_EVENT are used to signal any loop that reads user input(scattered
across normal.c edit.c , ex_getln.c and message.c) of asynchronous events that
were not initiated by the user.

Representing non-user asynchronous events as special keys has the following
advantages:

- We reuse the normal vim redrawing code. As far as the rest of the code in
  edit.c/normal.c is concerned, it's just the user pressing another key.
- Assume less about vim tolerance for "out-of-band" modifications to its
  internal state.
- We still have a very complex codebase and it's hard to predict what bugs may
  be introduced by these changes. With this we implement asynchronicity in a way
  that will be more "natural" to the editor and has less chance of causing
  unpredictable behavior.

As the code is refactored, we will be able to treat user input as an 'event
type' and not the other way around(With this we are treating arbitrary events as
a special case of user input).
Remove old comment from job.c
Remove donation value from backers.md
Sort backers.md
Add some missing backers and remove duplicates
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