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
- [ ] admin interface