nsqd: better diskqueue error backpressure

this is a continuation of the work done in #422, making
the feedback actionable to the PUB that errored thus
providing a better backpressure mechanism.

simultaneously, it significantly improves performance
by removing the topic's router goroutine (see first
commit msg)
I'd like to figure out how to re-use this buffer before we merge...