Smaller improvements to backend architecture and implementation

Apart from a few smaller improvements in the route structure there is an architectural change, which reflects the spray "best practice" of not letting the API layer leak into the application core.
Before, the API layer `RequestContext` was directly passed to the deeper application layers in order to enable delayed completion of a request. While this works it introduces a "reverse dependency" from the core to the API layer, which is something that should generally be avoided. One alternative approach is to leverage spray-routing's `produce` directive, which extracts an opaque "completion" function that already "packages" all marshaling logic etc. and which can then be passed on to the core and used for request completion.