nsqd: remove topic router goroutine

this change accomplishes a few things...

1. goroutines calling topic.Put*() via HTTP or TCP
   will now be able to directly detect failed diskqueue writes,
   giving the type of feedback you need to retry, without
   any asynchronous interaction.

2. related to (1), goroutines (and thus clients) will experience
   *direct* backpressure when messages are written to disk.

3. removes an extra goroutine per topic and an extra channel
   send/receive per PUB.  the aggregate effect on benchmarks
   is significant because this setup has far better concurrency
   characteristics (41% faster):

    $ GOMAXPROCS=4 ./bench.sh
    PUB: 2014/08/15 10:17:37 duration: 996.190589ms - 191.464mb/s - 1003823.978ops/s - 0.996us/op
nsqd: remove channel router
nsqd: re-use diskqueue byte buffers (go1.3 only)
nsqd: split apart backend queue code for testing
nsqd: update TestHealth
Merge pull request #437 from mreiferson/direct_error_feedback_437

nsqd: better diskqueue error backpressure
nsqd: don't decrement RDY count
nsqd: fix timeout test race
bump 0.2.31-alpha
use all memstats for percentiles
Merge pull request #440 from jphines/master

update memstats circular buffer
added readme for the nsqd and nsqlookupd apps
update twitter
nsqd/nsqlookupd: tweak app readme wording
util: s/ParseReaderOpts/ParseOpts
to_nsq: add --producer-opt flag; cleanup
nsq_stat: cleanup
nsq_tail: add --consumer-opt; cleanup
nsq_to_file: add --consumer-opt; cleanup
nsq_to_http: add --consumer-opt; cleanup