Force GitData to reload its commit ID cache.

There may be a delay between updating the branch pointer through the
GitHub API and receiving a notification (via webhook) from GitHub; this
can lead to incorrect behaviour due to stale commit data. To work around
this, we force GitData to reload its cache after pushing a commit.
Add BuildServerClient to manage builds.

Jenkins frequently returns HTTP error status codes when the force build
URI is queried. To avoid builds being "lost", the task of managing the
builds has been moved to BuildServerClient. It maintains a queue of
build URIs to trigger, and will repeatedly retry failing URIs.
Dispose all HttpWebResponse objects.

When a WebException is caught, its Response property should be disposed
(if non-null).
Rename class to *Extensions (for consistency).