Support remote work dir

When a Git repository is created with a remote work directory, there is
no .git folder in the repository folder. Check for the objects directory
as well.
Respond to push events with 204, 304 for others

204 No Content
304 Not Modified

Ref: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
Fetch changes instead of pulling

Pulling basically fetches and the merges, we only want to fetch the
changes and let the deploy stage decide on what to do with the work
tree.
Support deployment of a branch

Allow the configuration to specify a branch to deploy. The deploy
command will only be run if there is a push to the configured branch.
Switch to GitHub's JSON payload

GitHub now supports delivering a pure JSON payload which is much
cleaner.
Version and documentation update