Starting to add support for lockless shard master promotion:
This is an alternative way to promote a master in a shard pool. Instead of
setting the old master to read_only and moving existing slaves to replicate
from the new master, we do something more like the shard split process. It
is less interruptive, but does involve two distinct configuration changes.

We build a new slave of the master, and then create new slaves off of that,
resulting in a hierarchical replication setup. Then we move reads to the
new master, followed by writes. Finally we need to eject the old master and
its old slaves from the pool entirely.

This commit just starts some of the bookkeeping changes, such as overloading
the :child state to mean "write to the shard's master's master", instead of
meaning "write to the shard's parent's master". Additionally it overloads
the :needs_cleanup state to potentially mean "eject the old nodes from this
pool". The commit includes changes to Shard#cleanup! to implement this step.
simple_tracker should implement :child state more generically now.