Refine `Vchan type, functorise mirage over Vchan

We change the `Vchan to int (* domid *) * Vchan.Port.t (* port *)
This matches the upstream convention. Note we also add a dependency
on vchan.

Signed-off-by: David Scott <dave.scott@citrix.com>

(I thought I'd publish the work in progress before going too much further)