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.
Fix for writing response.
Don't set the header till later due to setting a status header if a router fails out badly.
Move metric count.
Merge pull request #113 from mozilla-services/bug/storage-and-routing-broke-fix

Routing goes down here after storage and such have been done.
Retry etcd requests with exponential backoff.

* Log etcd operations via `etcd.SetLogger()`.
* Set `CheckRetry` for logging and filtering retry attempts.
* Retry get and set operations that return Raft and etcd internal
  error codes.
Seed the RNG with the current time.

From the math/rand docs: "If Seed is not called, the generator behaves
as if seeded by Seed(1)." This can be disabled in the future via a test
hook.
`checkRetry`: Always record the retry count.