Service composition refactor

* Replace context dependencies with responder
* Segregate responder interface from context (adapter) interface
* Add helper methods to application for service composition

May consider using objects for lazy execution and composition of service
objects as these are easier to inspect on the console.

This allows aspects, filters and services to be composed together and leverages Ruby keyword arguments to allow objects to enforce the presence of particular keywords while passing through others transparently. Services then only receive the arguments they need rather than risking exposure to all user input.
Interesting point. I'd say it 'produces' tags because of it's function of verifying them so being explicit about passing them on is probably appropriate.

However the fact is it must do this. Accepting the tags keyword picks `tags` out of the request parameters and therefore prevents it passed through downstream.