Fix subscribe queue close with no subscribe call

Event handler cleanup was erroring on the removal of null listeners.
Fix subscribe before publish with AMQP

Subscribing is a process of creating a queue, then binding it to an
exchange. Publishing doesn't actually involve queues, AMQP publishes to
an exchange. Since the exchange was created in createPubQueue(), and
attempt to subscribe before publish was erroring on exchange not found.
Now both subscribe and publish create the exchange.
Refactor clustered tests to run with any provider

There are no changes to the tests, this is a pure refactor. It comments
the existing tests, and organizes the mocha tests into a forEach loop
over a set of providers. The only test being run is still native.
Close connection in harness after done

If the connection isn't closed, node won't exit, and the test will
timeout. For native, this wasn't necessary, because there isn't any
connection, other than that maintained by node for communication with
the parent.
Run cluster tests with AMQP
Merge branch 'test_amqp_in_worker'