Simplify 'run' control

This change refactors the existing 'run' command such that repeated code
is removed. It uses -- in a much clearer manner -- the existence of the
Broker and Storage directories to work out in which mode it should run.
The only extra piece of state required on a disk is an empty file,
whose simple existence indicates that a local (loopback) client is
needed.

With this change in place the 'join-cluster' and 'create-cluster'
commands are much closer to being fully functional, since they simply
don't create the empty file. Therefore it all just works.
Are we going to remove this once we add the messaging client state file and check for the existence of it instead?