Initial basic routing tests.

This includes all the orchestration to create test backends, and get a
request through the router to them.
Port remaining backend selection tests to Go
Port redirect tests to Go.

This required switching from using http.Client to http.Transport to make
the http requests.  http.Client follows redirects by default, whereas
http.Transport operates at a lower level, and makes a single request.
This is what we want for these tests.