nsqd: better diskqueue error backpressure

This is a continuation of the work done in #422, returning the `error` directly to the `PUB` in question, thus providing a better backpressure mechanism (vs. asynchronous as of #422).

Simultaneously, it happens to significantly improve performance (41% on `PUB` benchmark) by removing the topic's `router()` goroutine (see first commit msg for details, but basically `router()`  was effectively serializing `PUB` requests):

```
$ GOMAXPROCS=4 ./bench.sh
PUB: 2014/08/15 10:17:37 duration: 996.190589ms - 191.464mb/s - 1003823.978ops/s - 0.996us/op
```