nsqd: track stats of end-to-end message processing time

As per #268, this pull request adds the ability to track statistics about the time it takes for messages to get `.finished()`.  This is done by maintaining a probabilistic percentile calculation over each channel (using the [perks](https://github.com/bmizerany/perks) package) and merging them when topic quantiles are requested.

This data is surfaced in:

- [x] The `/stats` call
- [x] statsd
- [x] admin interface

Still to do:

- [x] Before/after timings
- [x] Docs

Sample data from `/stats` call:

```
$ curl "localhost:4151/stats"
nsqd v0.2.23 (built w/go1.1.2)

[test           ] depth: 0     be-depth: 0     msgs: 591      e2e%: 13.5s, 13.5s, 683.9us, 375.1us, 269.6us
    [test_chan                ] depth: 0     be-depth: 0     inflt: 0    def: 0    re-q: 0     timeout: 0     msgs: 591      e2e%: 13.5s, 13.5s, 1.1ms, 394.7us, 268.8us
        [V2 muon:55712           ] state: 3 inflt: 0    rdy: 62   fin: 591      re-q: 0        msgs: 591      connected: 7m18s
```