Reconnect strategy looping through the hosts array

The current multi host support only picks a host when the Bunny object is instantiated and sticks to it. This new strategy loops through the shuffled hosts array and tries each one in turn.

Only when all the hosts fail to connect it goes to the default reconnect strategy or just raises depending on the reconnect strategy chosen by the user.

This is a work in progress, I'll add the specs tomorrow. Any feedback would be greatly appreciated.

CC @woutslakhorst