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.
Merge branch 'rowcache'
Merge branch 'master' into replication
Include innodb dir in bootstrap archive.

Leaving it out breaks MariaDB replication status tables.