Add middleware functionality for incoming call messages

Summary
-------
This runs middleware on incoming call messages.

This allows custom middlewares to be configured.

Middlewares must return either a
`VegaServer::IncomingMessages::CallResponse::Accept` or
`VegaServer::IncomingMessages::CallResponse::Reject` object.

The objects returned by middlewares are effectively values of the Either
monad, where `Accept client_caller` represents `Right b` and `Reject
error` represents `Left a`. This calls consecutive middlewares as
functions to `#bind`, where the middleware chain is stopped whenever a
`Reject` object is returned by some middleware.

This adds a default middleware that checks whether a room id is in the
call payload.