RestEndpointReader
RestEndpointReader is responsible for deriving an E instance from a RoutingCall. Doing this dynamically at runtime involves some nontrivial JVM reflection magic, but it's a huge win for reducing boilerplate.