minimize readme
Issue #311 - Clean up blowfish.c/h, charset.c/h, diff.c/h, digraph.c/h, garray.c/h, hashtab.c/h, popupmnu.c/h, sha256.c/h, version.c/h. Update uncrustify to move logical operators to the beginning of the line when splitting. Also, clean up arabic.c/h and farsi.c/h
Removed testing for Homebrew installs

Fixes the luarocks/busted error.  Homebrew isn't exactly being
facilitated, so it's not an ideal solution, but it works.
Delete structs.h by spliting it and moving code to other headers

Here's the list of squashed commits (for more info, see PR #378).

 - Define guicolor_T as a typedef in syntax.h
 - Move a big chunk of code from structs.h to buffer_defs.h
 - Move aco_save_T from structs.h to fileio.h
 - Move option_table_T from structs.h to hardcopy.h

	Aditionally:

	 - Move the printer_opts global to hardcopy.c
	 - Delete structs.h. Include buffer_defs.h where structs.h was included
	   before.
	 - Add header guards to option_defs.h

 - Put mark types and constants in new mark_defs.h
 - Move undo structs to undo_defs.h
 - Move memfile structs to new memfile_defs.h
 - Move expand_T and cmdmod_T to ex_cmds_defs.h
 - Move memline_T to memline_defs.h
 - Move many defs and types to ex_eval.h
 - Move syntax related types to syntax_defs.h
 - Move struct memfile to memfile_defs.h
 - struct buffblock and struct buffheader moved back to buffer_defs.h
 - Move some datatypes to hashtab.h and eval_defs.h
 - Move the buffer_defs.h include and TODOs for remaining unrelated types in buffer_defs.h
Migrate input reading to a libuv event loop

This configures a libuv event loop running in a background thread, started with
the 'io_init' at the beginning of the program. For now it's only responsible for
reading from stdin(or stderr when vim is started on the right side of a pipe),
but this infrastructure can be reused for implementing other mch_* functions
that would require a libuv event loop.

Here's a list of changes performed:

- Move mch_exit, mch_inchar, mch_delay and mch_char_avail to the new 'io' module
- Remove unused functions in os_unix.c
- Remove hangul input support

The blocking aspect of 'mch_inchar', 'mch_delay' and 'mch_char_avail' is
emulated using a mutex combined with a condition variable, set by the thread
running the event loop.

This also removed all code that made use of the 'inbuf' static variable in ui.c
including the hangulin.c module. Hangul input is scheduled for removal from vim
(if vim is dropping support for a feature then I guess it's safe for us to
remove it too) and I had to tweak it to compile without GUI, but I should have
avoided the trouble and removed it from the beginning of the project. If hangul
input is needed we can try to integrate when we have a codebase that is easier
to maintain.
Remove stdin_stream as a module global

Use it as data passed to the callbacks. This will improve reuse of this code in
the future
Undo input buffer code removal

It shouldn't have been removed in the first place, since it's reponsible for
converting incomplete sequence into characters. A temporary helper function was
added to replace the `read(2)` call in the `fill_input_buf` function.
Refactor signal handling

This moves signal handling out of os_unix.c and into libuv event loop. The
actual handlers are in signal.c.
Set sigmask on the main thread to block signals
Refactor io module to fix all data races
Fix deadly signal reporting
Ensure `uv_stop` is only called once
Handle spurious wakeups in io_timedwait/mch_delay
Fix SIGTSTP handling
Split tsan/asan into travis build matrix
Add missing `signal.h` header
Fix `mch_breakcheck` race condition
Restore cursorhold logic
Fix location of the blocking wait
Split/refactor io module