Add `Client_main.find_master'`

This patch adds `Client_main.find_master'`, which should be a more resilient master lookup algorithm.

It also reworks `Client_main.find_master` to use the new `find_master'`, but keep the behaviour of the original action regarding error handling.
Hmm, I expected all exceptions to be caught here, saved into some refcell, and then possible rethrown where you throw the No_connection now?
(That way with_connection would still throw the same exceptions, to answer your comment a bit below here)