`config.discovery`: Remove `contacts` option.

This conflicts with the etcd locator options.
Simplify `EtcdLocator.Contacts()`.
`EtcdLocator`: Shuffle after acquiring contacts.
Router: Use a goroutine pool for routing messages.

* Add `RouterConfig.PoolSize`.
* Use newline-delimited strings instead of JSON for router messages.
* Add `routablePool` and `Routable.Recycle()`.
`EtcdLocator`: Store full server URLs in etcd.

* Remove `RouterConfig.{Scheme, UrlTemplate}`.
* Add `Router.URL()`.
* Remove `Router.formatURL()`.
* Update the sample config.
Copy `EtcdLocator.contacts`.
Merge pull request #108 from mozilla-services/bug/router

Simplify `EtcdLocator.Contacts()`
Avoid blocking the routing loop indefinitely.
Merge branch 'bug/notify-contact' into dev
Timeouts are per-bucket, not per-contact.
Add a `libmemcached` build tag.
Reduce `notifyContact()` timeout.
Switch to Cap'n Proto for routing messages.
Router: Replace `io.Pipe()` with a buffer.
Revert to `io.Pipe()`.
Add `StoreSnapshots` to toggle metrics snapshots.

Closes #109.
Send stack traces to Heka.
Rewrite stack trace slicing for clarity.
Merge pull request #110 from mozilla-services/bug/routing-take-two

More routing fixes
Routing goes down here after storage and such have been done.