Add Daemon restart test along with Daemon utils

This PR allows writing tests that need a daemon restart.
There is also a very useful test case that can also serve as an example on how to use it.

Ping @unclejack @tianon @vieux
Do we want to make this `time.Now().UnixNano()` right now so that we don't run into trouble at some point in the future by calling `NewDaemon` too quickly in succession?