testing if subscriptionAction.Channel.IsOpen when re-creating subscribers

topologyVisitor parameter cannot be re-used, even if it's not null,  without first checking that the channel to which it is bound is not closed - which happens when the consumer disconnects and reconnects unexpectedly.

The code would be clearer if  public virtual void Subscribe(IQueue queue, Func<Byte[], MessageProperties, MessageReceivedInfo, Task> onMessage, ITopologyVisitor topologyVisitor) didn't take in the  ITopologyVisitor topologyVisitor argument. I can't see why anyone would want to pass topologyVisitor in, or any usages.