[WIP] Reimplement job control patch with libuv

This is an improved version of the [job control patch](https://groups.google.com/forum/#!topic/vim_dev/QF7Bzh1YABU) I sent to vim mailing list a few months ago, and it will be the base for the new plugin architecture. The job module implemented here will be reused for spawning plugins.

The basic difference between plugins and plain jobs started with `jobstart` is that instead of invoking an auto commands passing the raw data to the vimscript programmer, plugins will have access to Neovim msgpack API directly

This is still a WIP so I'm still going to fix documentation, formatting, etc(this was basically a copy and paste from the patch)