Implement msgpack-rpc with child processes("spawn transport")

Here's the very basic of a nvim-lua client: a msgpack-rpc implementation based on the lua-MessagePack module, which I modified and included in the project because the upstream version wasn't working for implementing a "streaming unpacker"(necessary for deserializing data from asynchronous sources). Only the "spawn transport" is supported for now.

Even though the implementation is small compared to the python client(most of the code is from lua-MessagePack), this PR exposes the necessary API to start using this library for functional testing

I've chosen not to use an existing libuv binding because the ones I found are luarocks-unfriendly and would probably require changes to how we install lua dependencies. Another motivating factor is that lua C API is really clean and simple to learn, so binding lua to the libuv subset we need was easy.

I've added a helper makefile that creates a sandboxed prefix for development/testing, so running 'make test' should be enough to get everything running(at least on linux, other platforms may require adding a local.mk file as explained in the comments)

Later I will add a rockspec file to simplify installation from Neovim build system