Fixing a bug in Overlap computation.
Better keyrange management for resharding.

Now the split snapshot manifest contains the keyrange of the
server that took the snapshot, as well as the part that was
snapshot.

blp_recovery now contains the keyrange of the source shard.
That way we can find a server for it.
The player side just computes the overlap before asking the
server.
Using real KeyRange structure in binlog toolchain.
Removing an unused limitation in keyspace coverage
More simplification on KeyRange.
Now supporting changing filtered replicaton source

The binlog player needs to know the server KeyRange
to update the blp_checkpoint table properly.

Adding a test that swaps out the replica we're getting
data from, and checks the data still flows.
Small fixes from Ric's code review.
Adding a utility function to parse keys.
Merge branch 'master' into resharding
Using key.ParseKeyRangeParts everywhere.
Merge commit '088bc711f8aaff2657f46f2713d08bcd8a438bd9'
Merge branch 'resharding'
Parallelizing writing the results of a rebuild.
Fix simple bugs to topo.Server testing.
Merge branch 'master' of github.com:youtube/vitess
Specifying SourceShard better, easier.
Merge branch 'master' into resharding
Merge commit '31f4b1a8f7772361562d773a207324c611db03cc'
Restoring the uid as a unique id for resharding.

It is used as a unique id for a SourceShard, as well
as the primary key on _vt.blp_recovery.
Also checking schema in resharding.py.