strings/memory: constify and func_attr.

Fix MB_COPY_cHAR() to accept const pointers.
strings: Enable -Wconvert.
Update to libuv 1.0.1.

This should fix #1505 and #1276 and libuv removes support for dtrace all
together.
Wconversion: fix #1578
Refactor declaration generation

- Call compiler from CMake instead of lua script to generate a
  preprocessor file - allows for better/early error detection if
  the compiler fails
- Preprocessor files are saved along with the headers as .i files
- Accept preprocessor lines with trailing chars after # as is
  the case in Clang/Windows
- The fourth argument to gendeclarations.lua is now the path to
  the proprocessor output file
Merge pull request #1497 from splinterofchaos/const-attr

constify and func-attribute memory.c and strings.c
Fix SegFault when getting full path for files
Merge pull request #1582 from LBEaston/FixSegFault

Fix SegFault when entering Command(q:) or Search(q/) History
deps: Add libtickit/libtermkey as dependency

The new terminal UI will be implemented on top of those libraries
term: Move "set_shellsize" to screen.c as "screen_resize"
term: Remove most calls to settmode

Nvim now relies much less on setting terminal mode to cooked mode, remove most
calls to settmode, except for those that happen on startup or when suspending.
Eventually even those will be handled by the UI layer.
term: Move more mouse functions to mouse.c
mouse: Remove CHECK_DOUBLE_CLICK conditionals

This is now always defined.
Merge PR #1591 'Prepare to rewrite the terminal UI'
deps: Use unibilium URL with Makefile fixed for OS X

Close #1594
Don't use env vars for configuration time options

- As a general rule of thumb one shouldn't use environment variables
  for setting configuration options for CMake. The reason for this is
  we don't know when CMake will be executed and re-evaluate that variable.
- e.g. If we run cmake a first time with a var set, and then run make on
  a second session (with no var) and cmake is called because a
  dependency changed, the option would be disabled
- This commit removes the use of environment vars from
  src/nvim/CMakeLists.txt entirely
- Removed SKIP_UNITTEST since it could only be used to remove a target
  at configuration time (and the target was optional anyway)
- Turned SANITIZE into an option, clang-asan.sh now passes cmake
  -DSANITIZE=ON
- Removed SKIP_EXEC since it was disabling a target at configuration time
  (not being used)
Only use SANITIZE for nvim target

- Clang's Address Sanitizer options may cause problems when running
  the unit tests, restrict the use of these options to the nvim target.
systemlist: add `keepempty` option to preserve final newline
systemlist: test empty lines in beginning and middle of output
When SANITIZE=ON headers need -DEXITFREE