Add better security, errors, and setup for incoming Bitbucket web hooks.

This change improves many aspects of the incoming Bitbucket web hook
support, to improve security, error responses, and to ease setup of
hooks.

The Bitbucket URL now requires a valid hooks_uuid value, making the URL
practically unguessable. When accessing the URL for the repository, the
value provided in the URL will be matched against that of the repository
that was also referenced in the URL, returning 404 if they don't match.

The error responses have improved when the payload is incorrect. Instead
of just returning an empty HTTP 400, we now return an error string, in
order to help identify what went wrong.

Like GitHub, there's now instructions when setting up a Bitbucket hook.
Bitbucket has a helpful URL for adding a new hook with the hook detailed
pre-filled, which we use in the instructions to make it even easier to
get going.

Reviewed at https://reviews.reviewboard.org/r/6315/
Fix issues with the new GitHub post-commit hook handler.

The new GitHub post-commit hook handler had some issues in production.
First, when adding the hook, GitHub would try to send a "ping" event,
which we did not support. This resulted in GitHub saying that the hook
wasn't functioning properly (though it wouldn't disable the hook).

Second, and more importantly, the hook signature verification failed.
The X-Hub-Signature header contained the prefix "sha1=", which the
handler wasn't expecting. It now looks for this, erroring out if it
doesn't find it.

Reviewed at https://reviews.reviewboard.org/r/6318/
Merge branch 'release-2.0.x'