Implement more thorough shell command line escaping on Windows

On Windows, when a command is specified as a list, it's executed via a
batch file. Previously, the shell escaping being done in the process
was quite minimal (only pipes were being escaped), and not entirely
correct (for example, an argument of 'a | b' would get escaped to
'"a ^| b"', which is wrong, since the shell ignores carets inside quotes.

This commit expands the escaping logic to cover all shell special
characters that I know of. For compatibility I kept the exception
that lone pipes are not escaped (although I'd rather I hadn't).

I expanded the test for the embedded pipe symbol into a more generic
special character test, and made it no longer Win32-only, since on any
platform it doesn't hurt to check that special characters in arguments
are correctly passed through.
Use win32_batch_quote in shell_quote
slave: print used signal to kill process in logs
Try_Jobdir: fix a race condition

Wait for the sourcestamp to be written in the database before adding a buildset
that refers to it.
Merge delroth/buildbot:tryjobdir-race-condition (PR #1108)
fix pylint errors
Merge SpecLad/buildbot:win32-shell-escape (PR #1095)

+autopep8
+add r prefix to punctuation string
Merge lewurm/buildbot:printusedsignal (PR #1096)