Implementation for reconnections

A first attempt at reconnection logic for #71. Basically we just re-enter the unconnected state if there is a reconnection policy and attempt connection.

I only have a simple test, that isn't quite as clean as the rest of this project. I am open to suggestions for cleaning it up.