Don't watch files for reload until after starting the server.

Specifically, don't watch until after serverHandle points to the NEW
process. This way, if the watcher files, we are sure to kill the new process,
not fail to kill it because serverHandle is still pointing at the old process or
no process. The old behavior led to sometimes failing to kill the server; while
it would eventually die due to failed keepalive, the new servers would also fail
due to EADDRINUSE.

This change is possible because unlike the only dependencyInfo, WatchSets are
completely self-contained (there's no "... and it should look like it did the
first time" involved).

While we're at it, make restartServer always stops the watcher, and clear some
variables after they're used.

Fixes #1247.