Lots of cleanup and interface renaming

Basically try to make the code more idiomatic Go, so that it requires
less explanation and comments.

Renamed quite a few things to be clearer:
 router -> routeSet
 generator -> route

Made config parsing more flexible so that the config JSON can be embedded
inside the test code.

Removed the interface Generator which didn't really serve a purpose
over a concrete type.

Exposed RouterConfig so that you can prepare that without going
via the JSON configuration file.

Reduced usage of functional-style struct initialization. Dot-based
initialization is much clearer to read.

Did some work towards making the tests more isolated, but have
not yet been able to get the server to stop correctly.

Removed a redundant call to resp.Body.Close() in the HTTP forwarder.