[WIP] msgpack: Recognize buffers, windows, tabpages, and notifications.

One day it dawned on me that we could start an embedded nvim instance with `rpcstart()`
```vim
let vim = rpcstart('nvim', ['--embed'])
```
and send commands from within the parent nvim instance!
```vim
call rpcrequest(vim, 'vim_set_current_line', 'SOME TEXT')
echo rpcrequest(vim, 'vim_get_current_line')  " Prints SOME TEXT
```
but that attempting to get a list of windows, buffers, or tabpages would hit an `abort()` from `object_to_vim()`.
```vim
echo rpcrequest(vim, 'vim_get_buffers')
echo rpcrequest(vim, 'vim_get_tabpages')
echo rpcrequest(vim, 'vim_get_windows')
```
This PR makes the above lines not trigger that abort. Inspired by [vim-misc's xolox#misc#os#exec()](https://github.com/xolox/vim-misc/blob/master/autoload/xolox/misc/os.vim#L82), which spawns another vim instance in order to execute commands asyncronously.
The boolean adds many new branches. Is it possible to always require the same arity for requests and notifications?