Use GNU gettext from homebrew on Mac if available
Improve libintl detection and linking.

This makes it so that a self-installed libintl is now detected and used.
It also attempts to locate a homebrew version of the library, if that
exists.
CMakeLists: Use nvim target name
CMakeLists: Improve handling of libintl

by refactoring it into a separate CMake module
Add basic infrastructure for unit testing

Tests will be written using the [moonscript](http://moonscript.org/) language,
a lua 'dialect' that is whitespace-significant and has a syntax similar to
coffeescript. The test framework used is [busted](http://olivinelabs.com/busted/),
a bdd framework for lua/moonscript.

Luajit has a nice ffi module, which lets lua programs link shared libraries and
call it's functions without writing any C code.

To take advantage of this fact for testing C functions, a new target was added
to CMakeLists.txt, which compiles neovim as a shared library that is loaded by
the process running the tests.

This commit adds necessary code for downloading and installing a lua package
manager(luarocks) locally. It wasn't added as a subtree because there are quite
a few blobs in its source tree.
Add more example unit tests and run with travis
Disable unit tests until fixed for travis
Compile libuv with -fPIC.

This is needed so that th unit tests library compiles on 64-bit machines
correctly.
Add unit test running to travis again
Use cmake module instead of shared for nvim-test

On a Mac using shared creates libnvim-test.dylib which cannot be found
by the hardcoded .so extension in helpers.moon, causing the unittests to
fail. However, using module creates libnvim-test.so, allowing the tests
to run. There will still be problems running the tests on windows,
because both shared and module create dll file which will not be found
by in helpers.moon.
Extract garray.c from misc2.c

Start to split misc2.c in many other files (see #209).
Include "garray.h" in ex_cmds2.c
Use _NSGetEnviron on Mac OS X to gain access to environ.

When building nvim as a shared library for testing, environ is not
exposed.  In order to gain access to the environment variables, you must
get a pointer to them from _NSGetEnviron().

It appears that this may affect the FreeBSD platform too.
Only include libintl's include dir if libintl was found.

This prevents an error from CMake when libintl is not found.  It's not a
required library, so we must wrap the inclusion in a conditional.  It
was already done for the library.
Setup better warning flags for Clang.
Fix a 'garbage value' warning found by Clang's static analyzer

 - Initialize lists in paragraph_start()
 - Remove two dead stores
MAKE: ask gnulikes to warn and be pedantic + fixes

It seems clang 3.4 thinks the codebase is in fantastic shape and gcc 4.9.0
has only minor niggles, which I fixed:

- fix uninitialized member warning:
    In DEBUG mode the expr member doesn't get properly initialized to NULL.

- fix warnings about directive inside of macro's:
    On some platforms/compilers, sprintf is a macro. Putting macro directives
    inside of a macro is unportable and gcc 4.9 warns about that.

- fix signed vs. unsigned comparison warning:
    The in-memory table will luckily not even come close to the limits imposed
    by ssize_t. If it ever reaches that, we've got bigger problems.
Added a types.h with vim.h unsigned int typedefs.
Extract file_search.c from misc2.c

Continue to split misc2.c in many other files (see #209).

The only changed I made to the moved code was adding
`vim_free(ff_expand_buffer)` to `free_finfile()`. This is was needed
because `ff_expand_buffer` was moved from `misc2.c` to `file_search.c`.
CONTRIBUTING.md: mention coding style