fix bottleneck when using confirms

Publishing msgs using confirms can create a situation where
so many event listeners are registered that `exchange.removeListener`
becomes a significant bottleneck (see https://gist.github.com/aheckmann/7762370)

Instead of relying on EventEmitter we now register a single error
handler for the exchange and handle error disbursement manually.

Results of running the above gist as follows:

> time DEBUG=amqp:* COUNT=30000 PREFETCH=0 BUCKET_SIZE=20000 node index.js

before applying the fix:
real  1m22.216s
user  1m10.973s
sys 0m16.106s

after:
real  0m25.034s
user  0m14.082s
sys 0m15.153s
remove #emitAck

it doesnt belong on a Promise. we just use "once" instead