Bugfix: 'git create-tracking-branch' was misspelled

--------------------------------------------------------------------------------
Signed-off-by: Jeff Felchner <accounts+git@thekompanee.com>
Feature: Allow 'git-update' parent branch other than 'origin/master'

Previously if you were on a branch `foo` that had a tracking branch
`origin/foo`, when you ran `git-update` it would attempt to rebase `origin/foo`
onto `origin/master`.

This, although an excellent default, needs to be able to be configurable.  Now,
if you pass something to `git-update`, it will be assumed to be the base parent
branch that you would like to use.

Closes #18

--------------------------------------------------------------------------------
Signed-off-by: Jeff Felchner <accounts+git@thekompanee.com>
Refactor: Instead of checking branch names, check for a tracking branch

Previously we were basing this on the names of things, but this is problematic
and not very accurate of what we care about.

What we really care about is whether the branch we're updating has a tracking
branch.  If it doesn't then we use the parent, if it does, then we use the
tracking branch.

References:
  84751a8
  #9

--------------------------------------------------------------------------------
Signed-off-by: Jeff Felchner <accounts+git@thekompanee.com>
Bugfix: Running 'git-update' on a fresh repo threw an error

It was due to the fact that the reflog has a bug as far as I can tell.

Running `git reflog origin/master` on a fresh repo returns nothing, even though
there is at least one entry for `origin/master` when you run `git reflog`.

Instead of trying to patch a fix, I decided to bump the lowest allowed version
of Git to 2.0 which has a `--fork-point` option to `git merge-base`.

This effectively removes the need to have the
`__git_determine_original_tracking_sha` function and does the right thing in
this case.

--------------------------------------------------------------------------------
Signed-off-by: Jeff Felchner <accounts+git@thekompanee.com>
Refactor: Use the new Git 2.0 'push --force-with-lease' option

This option makes available effectively exactly what `smart-force-push` was
doing, so it is no longer needed.

--------------------------------------------------------------------------------
Signed-off-by: Jeff Felchner <accounts+git@thekompanee.com>
Feature: Make backmerge idempotent

Previously backmerge would move remote pointers around, now we use `git
ls-remote` to access the location of the remote pointer without moving pointers.

Actions:
  Closes #8

--------------------------------------------------------------------------------
Signed-off-by: Jeff Felchner <accounts+git@thekompanee.com>