(Maint) Don't write to stderr from the watcher

Previously, the watcher was writing the shutdown command to $stderr just before
executing the command. However, if the puppet process had already exited, then
the call to $stderr.puts will raise an exception when executed via cygwin.

The exception message said: Invalid argument - <STDERR>. And since the exception
is raised just before executing the shutdown command, the acceptance test would
fail.

Note this is timing dependent, since everything works out ok if puppet is still
running when the watcher writes the shutdown command to $stderr.

This commit adds exception handling around the watcher, and changes the watcher to
write to a temp file. Also some of the acceptance tests rely on parsing the
shutdown command that the watcher is going to execute. I moved this into the
provider itself.

One acceptance test had to be modified so that it doesn't try to match the timeout
message, since the watcher no longer writes to $stderr.