Adding a unit test for topology.
rowcache: change memcache_stats to poll

memcache_stats used to pull expvar values on demand. This introduced an
rpc dependency on expvar, which is not sound. With this change we
regularly pull stats from memcache and update the expvars.
Also, the new version has made the items & slabs stats optional, and
rowcache doesn't export them any more.
Merge branch 'rowcache'
Lowering the number of concurrent aciton nodes.
Add --max-in-flight argument to vtgate.

This is a means to limit the amount of queueing which can occur, which
should cause failure states to report as such faster rather than
becoming sinks for queries.
Fix queryservice tests for MariaDB.
Merge branch 'master' of github.com:youtube/vitess
Adding a Close method to VtctlClient, it's better that way.
Couple small fixes to these tests.
Fixup unit test.
Add new client-side error type to represent request backlog errors.

fixup
rowcache: add timeout for memcache

Memcache connections can hang under system duress. Adding timeouts
to make sure we can recover if stuff like this happens.
Also, connections are now closed if there is any kind of low level
error. This will allow the connection pool to replace them.
Refactoring this file a bit to allow for easier move.
Moving wrangler/events to topotools/events.
Moving more code from wrangler to topotools.
binlog_streamers: get rid of nested ServiceManagers

Nested ServiceManagers create unresolvable race conditions
on shutdown. It's better to have only one at the top level,
and we just pass its context down to all the dependent
services.
binlog_streamer: Simplified the APIs.

The binlog streamer API required too many closures nesting.
Turtles all the way down. Made some simplifications to
reduce this complexity and make the code more readable.
binlog_streamer: minor tweaks
Implementing a TabletExternallyReparented action inside vttablet.

It does the same as ShardExternallyReparented, but since it's running
on the new master-elect tablet, it can do the slaveWasPromoted
action locally. Then it still tells the other tablets, which means
the vttablet binary now needs to be able to RPC to other vttablets.

This eliminates a bunch of error conditions where we can't talk to the
new master in the ShardExternallyReparented side.

Refactoring a couple things on the way:
- lockTimeout is now an agent global parameter, not just used by healthcheck.
- the flag to chose the tablet manager protocol can move to initiator,
  now that it is used by everyone who uses initiator.
Setting the dbname for filtered replication in the right spot.

Instead of setting it when we enable query service, since we don't
enable query service when filtered replication is on.