Add unit tests for etcdtopo.
Add topo tests for deleting keyspace, shard, etc.
Reject lock attempt on nonexistent keyspace/shard.
Fix panic and hang in etcdtopo lock.

Found during integration tests:
- Panic was because nil *Response is returned on error.
  Updated fake etcd client to reflect this.
- Hang was because released locks were setting empty contents
  instead of the new magic value.
Don't check ctx.Err() unless ctx.Done() was closed.

The zktopo lock tests have been flaky, with errors saying "interrupted".
This was because there's a race condition where ZK can time out before
the ctx.Done() channel has been closed, so ctx.Err() returns nil and we
return the wrong topo error (interrupted instead of timeout).
Set non-zero default for vtctl lock timeout.

Elsewhere it was decided that we should adopt the Context convention
that a timeout of 0 really means time out immmediately. The vtctl
default of 0 was causing timeouts in places that respect ctx deadlines,
like etcdtopo.
Merge branch 'master' into etcdtopo-test
Wait for both mysql.sock and mysqlctl.sock.

I switched from SSD to RAM disk and it exposed a race condition.
When launching mysqlctld in the background, we need to wait for both
mysql.sock and mysqlctl.sock to show up before we try to connect.
Wait for mysqlctld to terminate before continuing teardown.

Another race condition exposed by RAM disk:
We were sending SIGTERM to mysqlctld, but not waiting for it.
Then we proceed to delete all the data files. If the deletion is fast
enough, it can remove files that mysqlctld needs to do its teardown, and
mysqld processes are left orphaned.
Merge pull request #255 from youtube/zktopo-lock-timeout

Don't check ctx.Err() unless ctx.Done() was closed.
Merge pull request #247 from youtube/etcdtopo-test

Add unit tests for etcdtopo.