Factory for controllers from an Http request.

A controller is responsible for creating a Response object which will be
delivered to the user.
Get responses may be delivered as plain/text or as JSON, which were
previously created by a "CreateResponse" class serving just GET requests
and not offering any interface easily consumuble by the POST controller,
prompting the change present here (strategy moved to a private method
inside GET controller).

Ideally controllers should create the base response object and later,
based on the Accept header of the request, the response should be
properly serialized to the end user by a different object.

@TODO tags with refactors are added as the factory exposes some unecessary
dependencies.