Make connection recovery tests more robust

 * Avoid a race condition between shutdown/recovery
   listener registration and connection closure.
   Now we always have listeners in place by the time
   rabbitmqctl runs.
 * Use assertDelivered as it does exactly what we need.
 * Remove a test that's no longer relevant as recovery
   listeners are relied on by the entire test case.
Remove unused method
Get rid of CountingDownConsumer

assertDelivered does what we need
Add ConnectionRecovery to functional test suite
Remove sleep calls
Remove unused method
Change recover return values to void where they are not used
Remove unused imports
merge heads