I'm not sure we want to add another goroutine to the channel to manage this data.

There are a couple reasons...

1. as written there's a race between some other goroutine that calls `Exit()` (which closes `c.messagePercentilesChan`) and any other goroutine that calls `FinishMessage()` (which sends on `c.messagePercentilesChan`).  We've handled these cases in a variety of ways, but in short, its a pain in the ass.

2. the overhead.  I *really* want to minimize overhead from this on the fast path.