fix some flakiness in integration spec
extract router endpoint logic into EndpointPool

This structure is responsible for maintaining the uniqueness of
registered endpoints per URI, and providing a random endpoint on
request.
fix a few flaky tests, have .Run not block forever

- Router.Run now returns as soon as it's in a good state

  definition of good: subscribed to router.register, sent router.start,
  etc., and about to start serving traffic.
- fix EndpointPool double-counting equivalent endpoints (same addr)
- workaround go net/http bug (see comment in proxy_test.go)
log to /dev/stderr when running tests
log by url when pruning stale droplets
fmt
split router package into smaller packages (wip)

casualties:
- no longer logging message bus stuff (but we don't want that forever)
- no longer using gocheck output in travis, as gocheck doesn't deal with
  sub-packages very well (only runs top-level and behaves weirdly)

new packages:
- registry
- route
- config
- log
fix main
fix pruning bug that would result in zombie routes

  router.register myaddr:1234 foo.com bar.com
  [...]
  router.register myaddr:1234 foo.com
  [...]

Previously this would keep bar.com around without pruning it if an
explicit router.register was not sent, as the registers for foo.com with
the same address would keep it alive.