build: no need to quote the paths in CMake, it will do it automatically
build: only manipulate out if getting the timestamp was successful

This fixes an issue seen in #1548, though the real problem is something
different.
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.
clipboard: support separate '+' and '*' clipboards
clipboard: handle linewise/charwise selections correctly
clipboard: clean up unnamedclip logic
options: change "unnamedclip" back to "clipboard=unnamed/unnamedplus"

This allows to configure which of '*' and '+' should be used for
the unnamed clipboard, and is consistent with vim.
clipboard: better error messages when provider not available
clipboard: add functional test
clipboard: fix `let @+ = ...` and add test
eval_has_provider: search autoload scripts same order as call_func
Merge pull request #1599 from jszakmeister/gitrev-fixes

Some simple fixes to GetGitRevisionDescription.cmake.
docs: remove unnamedclip option
Merge pull request #1182 from bfredl/clipboard

clipboard: support separate +/* clipboards, linewise copy/paste and add tests
msgpack-rpc: Allow registration of handlers by other modules
ui: Add abstract_ui termcap and split UI layer

This is how Nvim behaves when the "abstract_ui" termcap is activated:

- No data is written/read to stdout/stdin by default.
- Instead of sending data to stdout, ui_write will parse the termcap codes
  and invoke dispatch functions in the ui.c module.
- The dispatch functions will forward the calls to all attached UI
  instances(each UI instance is an implementation of the UI layer and is
  registered with ui_attach).
- Like with the "builtin_gui" termcap, "abstract_ui" does not contain any key
  sequences. Instead, vim key strings(<cr>, <esc>, etc) are parsed directly by
  input_enqueue and the translated strings are pushed to the input buffer.

With this new input model, its not possible to send mouse events yet. Thats
because mouse sequence parsing happens in term.c/check_termcodes which must
return early when "abstract_ui" is activated.
syntax: Use RGB/GUI attribute information for "abstract_ui"

Instead of using classic cterm color numbers and attributes, treat "abstract_ui"
as a GUI: Pass rgb color numbers and gui attributes when the "highlight_set" UI
method is called. The terminal UI will have to translate RGB color information
to an appropriate color number, and the "term"/"cterm" :highlight keys will
eventually be deprecated.
msgpack-rpc: Add remote_ui module

The remote_ui module is an implementation of the UI layer, and it attaches UI
instances that redirect redraw notifications to connected clients.
test: Add screen test facility

- Add screen.lua which implements a remote screen to verify screen state by
  tests under functional/ui
- Add some basic screen/highlight tests