Add a pre-push hook checking for "wip", "fixup" or "squash" commits.

By setting up init.templatedir, this hook will now be included by
default in all new repositories I create, which is pretty sweet.
Make major improvements to git-branch-push and git-branch-pull.

* Added help messages.
* Added smarter and better error reporting.
* Added --create and --delete options to branch-push.
* Added --ff-only, --merge and --rebase options to branch-pull.
* Made branch-pull much smarter about wasting its time. It does ff
merges instead of rebases where possible and doesn't bother rebasing
if the HEAD is ahead of the remote branch.