Automatically reconnect to tap on failure

Jens Alfke wrote about half of this and it looked pretty good.  I did
the parts that close.

I tested under a few error conditions as well as successes (both
continuing after failure and an explicit shutdown and verifying the
goroutines cleaned up properly and stuff).