Split Content-Length header out into it's own ContentLengthMiddleware

ConditionalGetMiddleware by name is overloaded since this behavior has
nothing to do with conditional gets.

This will need documentation update that I'd be glad to do if the idea is accepted.