Given a model of the types involved in a family of RPCs, this functor provides a
single RPC versioned dispatch function dispatch_multi
in terms of that model and
a mechanism for registering the individual versions that dispatch_multi
knows
about. Registration requires knowing how to get out of the model.