move most logic to handlers, not transports

An http.RoundTripper is really only for outgoing requests.
During most of the routing logic (choosing a group, then
choosing a backend), we are deciding what to do with the
incoming user request; it hasn't yet become an outgoing
request. This way is a little easier to think about and
to work with.