Refactored request/response flow to use ParameterBags

Implementation based heavily on the one from Symfony. Controllers now construct their own Response objects rather than being supplied one. The response method is now part of the Request as the `format` parameter