Reparent and rebuild changes.

Two fixes to improve the stability of the system:

- when we ShardExternallyReparent, if a slave has the wrong master,
we keep it in the replication graph with its current master.
That way it will still be discovered properly.

- when we rebuild the serving graph, we skip tablets which have
the wrong master (as in: not the master in ShardInfo). They're not
replicating properly, they shouldn't be serving.
fix binlog_streamer_test
New EventStreamer API for update stream

The new API is different from binlog_parser because
it only transmits the group id. Also, the API now
sends differnt object types (DDL, DML, or position).
The new position is only sent at the end of a transaction.
This ensures that retries will cause the events from the
current transactions to be resent in case of mid-transaction
failures.
Typ->Category
Merge branch 'new-binlog-streamer'