Improved join() behavior

* Peers attempt to "RE-JOIN" automatically when they are set as their
own successor
* Chord join gets invoked either directly by
`connectionmanager.bootstrap()` or by `stabilize()`
* `join()` does not update the successorList - this is handled by
`stabilize()`