Refactor Frontend code to allow code sharing between SSI and gRPC implementations
Currently the code which handles different request types in the SSI Frontend has been copy/pasted and modified in the gRPC Frontend. This should be refactored so the same code can be used by both implementations as far as possible.
This also abstracts details of the scheduler (and catalogue) implementation away from the Frontend protocol.