Enhancements for Neovim

This PR contains some enhancements that will make YCM run better on Neovim, which uses a separate process for running python code.

Here's a summary of the changes:

- Calls to the magic vim module have been reduced in order to lower the communication overhead between the python process and Neovim(It won't impact vim performance)
- A new class which is automatically loaded by the python process(NvimYcmAsyncHelper) was added. This class handles events from Neovim and callbacks from ycmd requests.
- Neovim `send_event` function is used to notify the python process about events. This was done because the `python` command blocks Neovim until the python process responds.
- Instead of polling for compilation/completion results, NvimYcmAsyncHelper directly calls Neovim once ycmd responds. For Neovim, the `complete()` vimscript is used to display completions asynchronously('omnifunc' is not touched)

I've posted this for review, but it's not ready for merging yet. I'm still stabilizing the Neovim branch which supports python plugins, so there may be some minor changes to this code. I'm also going to improve commit messages and descriptions.
At first glance, this strikes me as wrong. ycmd expects to see a OnFileReadyToParse event and you're not sending it when the user is using neovim.

I don't want to have two models of ycmd calling behavior: one when the user is using neovim and one for plain vim. That would be difficult to maintain and reason about.

Given a sequence of equivalent keyboard presses in vim and neovim, both vim and neovim should call ycmd in the same way. The sequence of HTTP calls should be the same. There really isn't any good reason for it to not be the same since neovim support is just a different client.