Use cmake --build instead of Make

- If possble try to abstract away from Make, and use cmake --build
- third-party still needs to find Make to build some components
- Removed search for Make from CMakeLists.txt
* for CMake < 3.0 --build has no color output
Merge pull request #1485 from equalsraf/tb-no-make-prg

Use cmake --build inside CMake scripts instead of calling Make directly
doc: update msgpack_rpc documentation to use nvim as variable name #1470
doc: Remove MS-DOS specific options bioskey and conskey #1353
Fix #1484: search gettext subdir for header

On some systems, such as NetBSD, the gettext header is tucked under the
gettext directory in the system include area.  Let's add a path suffix
to ensure we correctly discover the header on such systems.
Merge pull request #1487 from jszakmeister/search-gettext-subdir

Fix #1484: search gettext subdir for header
eval: Add eval_call_provider/eval_has_provider functions

These use autoloaded vimscript to replace the provider_call/provider_has
functions, moving the implementation of providers to pure vimscript(we lose
nothing since vimscript can also call msgpack-rpc functions).

When calling the rpcrequest function from a provider, temporarily switch to the
caller scope. This is required for compatibility with legacy plugins, because
they may depend on scope information that changes when "leaving" the C stack to
enter the vimscript stack.
eval/ex_cmds2/ops: Implement providers with eval_call_provider

Replace references to provider_call/provider_has with the new functions
eval_call_provider/eval_has_provider.
Remove os/provider.{c,h} and all of its references
channel: Remove invalid free_channel call

When a job fails to start, it will already call the exit_cb which takes care of
freeing the channel.
channel: Improve error reporting for invalid responses
runtime: Add vimscript support for external plugins

External plugins(a.k.a msgpack-rpc plugins) are now supported through a
library of vimscript functions that deals with:

- Associating plugin host names(eg: python, ruby, go) with channel ids
- Registration of external plugins
- Definition of commands, autocmds and functions lazily implemented over
  msgpack-rpc
runtime: Reimplement python/clipboard providers in vimscript

Clipboard is implemented with platform-specific shell commands, and python is
implemented with the external plugin facility (rpc#* functions). The
script_host.py file(legacy python-vim emulation plugin) was moved/adapted from
the python client repository.
runtime: Remove 'python_setup.vim'
test: Add tests for the rpc#define#* functions
test: Add tests for the python provider

These tests were adapted from the python-client repository
docs: Update to the latest changes in the plugin infrastructure
Merge PR #1454 'Refactor plugin system'
Fix warnings: tag.c: test_for_static()/get_tags(): Various (2): FP.

Problems   : Assigned value is garbage or undefined @ 2191.
             Uninitialized argument value @ 2796.
Diagnostic : False positives.
Rationale  : Both problems share the same cause.
             Error happens in get_tags(), if parse_match() fails because
             of parse_tag_line() failing before. Then, `tp` is not
             correctly initialized and subsequent code accesses garbage
             values.
             This is not really possible, as parse_tag_line() should not
             fail after find_tags() has been successful.
             That is because find_tags() already does tag line parsing,
             using parse_tag_line() itself for it (or a quicker
             alternative that should produce same result). That's why
             return value of parse_match() is ignored, and subsequent
             code assumes it is successful.
Resolution : Assert parse_match() always successful.
Fix warnings: tag.c: jumpto_tag(): Np dereference: MI.

Problem    : Dereference of null pointer @ 2399.
Diagnostic : Multithreading issue.
Rationale  : Error can only occur if global `g_do_tagpreview` changes
             while the function is executing.
Resolution : Use local copy of global var.