Refactor:

* Introduce ConnectionParams class to hold 10 of the parameters which get passed around in Connection constructors.
* Introduce RecoveryAwareAMQConnectionFactory class which the AutorecoveringConnection can hold on to so it can create new connections for recovery without having a ConnectionFactory which might be mutated under it.
* Try to clean up as much as possible the various overloaded constructors and factory methods for connections.