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 #ifdef FEAT_WINDOWS
Remove #ifdef FEAT_DIFF
Removed #ifdef FEAT_MBYTE
Removed #ifdef FEAT_QUICKFIX
Removed FEAT_FOLDING
Removed FEAT_AUTOCMD
Removed #ifdef FEAT_CINDENT
Removed unused FEAT_* defines