Win32 signal handling - protect against sudden death

With this change Tundra will re-launch itself in a different process group and
then use the original process as a canary to signal cancellation. The reason
this elaborate dance is needed is that some shells/environments just call
TerminateProcess() on things they have launched, and doing that on Tundra means
we don't get a chance to save our build state, which sucks.

This can be disabled by passing -U which is handy when debugging Tundra itself.