channel: Implement the  'channel_send_call' function

This function is used to send RPC calls to clients. In contrast to
`channel_send_event`, this function will block until the client sends a
response(But it will continue processing requests from that client).

The RPC call stack has a maximum depth of 20 and a single call cannot be idle
for more than 3 seconds without the channel being closed.
channel/msgpack: Refactor to better separate functions into modules
channel/msgpack: Move api metadata handler out of the generator
msgpack/channel: Refactor dispatching function to enable recursion