Move some #defines from farsi.h to farsi.c
Do not include farsi.c in main.c

 - Change CMakeLists.txt to compile farsi.c normally
 - Add const to global variables in farsi.h and define them in farsi.c (no need
   to include farsi.h with DO_INIT defined in globals.h)
 - Include farsi.h where necessary
 - Include all necessary headers in farsi.c
 - Move farsi function declarations from main.h to farsi.h
Use memset instead of vim_memset

Ran some commands on terminal, reviewed changes, and made some manual changes
too.

    find src | xargs perl -i -p -e "s/vim_memset/memset/g"
    git grep -l memset | egrep "\.c$" | xargs perl -i -p -e \
        's/(#include "vim\.h")/#include <string.h>\n\n\1/g'
Prefer enums over incremental defines
Use memmove instead of mch_memmove
Use memcmp instead of vim_memcmp
Remove MEM_PROFILE related code

Code around `#ifdef MEM_PROFILE` was used to profile vim's memory
comsumption. It's very likely broken as new code is using malloc() and free()
directly.

In this day and age, valgrind can solve in a much reliable way what
this code was trying to do.
HAVE_AVAIL_MEM is always undefined. Remove tests and dead code

Defining HAVE_AVAIL_MEM doesn't even build. The code tries to call
`mch_avail_mem` which is not defined.
Use realloc instead of vim_realloc
Reimplement input functions on top of libuv

The functions `mch_inchar`, `mch_breakcheck`, `mch_char_avail` were
reimplemented on top of libuv. Here's how it works:

- When Neovim needs to wait for characters, it will transfer control to libuv
  event loop.
- When the libuv event loop gets user input, it will transfer control back to
  Neovim
- Neovim uses the `input_read` function to get the actual data read by libuv.

With this scheme its possible to keep Neovim single-threaded while enjoying the
benefits provided by libuv.

This commit leaves SIGWINCH broken for now
Cleanup of indent.c to make it comply with style guide.

- Uncrustify indent.c
- Fix comments
- Fix whitespace
- Format get_lisp_indent (needs to be refactored completely)
- Fix endline comments
- Change to postincrement
- Fix clint.py errors
- Move static function last
- Fix blank endlines
remove CheckMakePairUsesDeduction

Irrelevant
remove CheckForIncludeWhatYouUse

Only checks C++ related headers
remove CheckCStyleCast
remove CheckForNonConstReference

irrelevant
remove "stream check" from CheckIncludeLine

irrelevant
remove C++ only stuff from CheckLanguage

Do we want VLAs?
remove some unused variables
remove unused function
remove CheckSectionSpacing

irrelevant