Sort log fields lexicographically.
`logResponseWriter`: Log hijacked responses.
Define `Logger.Close()`.
Refactor Heka logging.

* Remove `HekaFormat` and `HekaLoggerConfig.Name`.
* Add `NetworkLogger` for sending Protobuf-encoded log messages to a
  remote Heka instance over TCP or UDP.
* Add `hekaMessagePool` for recycling Heka message objects.
* Bump the message envelope version.
Fix request decoding regressions.

* Allow `HelloRequest.DeviceID` to be omitted.
* Fix the `ACKRequest.Updates` struct tag.
Client: Add `Conn.CloseNotify()`.
`client.Dial`: Return the device ID.
`client.Conn.Send`: Abort on error.
`client.Conn.Close()`: Always wait until close.

`Conn.fatal()` no longer prevents `Conn.Close()` from waiting for the
connection read and write loops to exit.
Simplify `LogFields.Names()`.
Add `FileLogger`.

Ensure `{File, Network}Logger.Init()` initialize the underlying
`HekaLogger`.
Add `LogEmitter`.

The `LogEmitter` interface is implemented by `TextEmitter` and
`HekaEmitter`. `NetworkLogger`, `FileLogger`, and `StdOutLogger` now
delegate to an underlying emitter that formats and sends log messages.
Avoid pinning `heka/message`.

Because `gpm` runs `go get` and `git checkout` for all dependencies in
parallel, attempting to `go get` a package from the same repo will fail
when `gpm` checks out a specific revision and `go get` runs
`git pull --ff-only`.

As a workaround, we only pin `heka/client`, which depends on
`heka/message`.
`NewTextLogger()` => `new(StdOutLogger)`.
Merge pull request #89 from mozilla-services/feature/load-tests

Various and sundry fixes