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
Revert "Merge varunsharma/buildbot:master (PR #1097)"

This reverts commit c39caeed39c251f15d4a0102cee1a5af95778d49, reversing
changes made to 66784b87b7991f470f9dce5206894737e154c3aa.
Rename props.has_propkey back to props.has_key

This was renamed in 03e1d28, but that was too much.  Pep8 was only
complaining about calls to has_key when 'in' is better.
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)
make DirectoryLister use HtmlResource to honor 'view' authorization property
Fix perforce workdir path when master and slaves are in different os
Merge inolen/buildbot:master (PR #1111)
Merge alagoutte/buildbot:master (PR #1112)
relnote
status_json: Allow double escaping for resources in select

This patch provides a workaround for an issue that would cause queries
of the form

"select=builders/my%20slashed%2Fbuilder"

to be interpreted as a hierarchy of separate resources:

builders
 - my slashed
   - builder

Instead of the intended:

builders
 - my slashed/builder

This way, we can double escape resources with specially treated
characters in them (such as slashes), and still retrieve them properly.

For instance, the query above becomes:

"select=builders/my%2520slashed%252Fbuilder"

instead, and renders the desired result.

Signed-off-by: Anton Lofgren <alofgren@op5.com>
Merge catharsis/buildbot:status-json-double-escape-resources (PR #1115)
require pep8-1.4.6 temporarily, since the new version is a lot whinier
Fix documentation about update Gerrit Status

There is no status variable in gerritStartCB

message += status.getURLForThing(build) + "\n"
exceptions.NameError: global name 'status' is not defined
When use GerritChangeSource, the first test never work on step addStep(Gerrit(repourl=repo, mode="full",retry=[60,60],timeout=3600))...
The step launch a cloning of git repo

The build always fails with fatal: Remote branch refs/changes/xx/yy/zz not found in upstream origin...

Add check when clone to no add branch if the branch start with refs/changes/

Only this issue with > Git 1.8
See also http://trac.buildbot.net/ticket/2485#comment:8