Response Negotiator

OK, so this is most of the change I've been wanting to get in for a while (in #1213). It's basically ripping out the conneg parts from the `DefaultRouteInvoker` and putting them in a separate service `IResponseNegotiatior` with it's default implementation `DefaultResponseNegotiator`.  

I'd refactor (move) the tests as well, but it seems there's no unit tests for the conneg parts and the new response negotiator is covered 87% by functional tests (the rest is mostly trace calls).

The next step (for a future PR) would be to use this service to do conneg in other pipelines :smile: