Improve the Git SCM tasks.

The `git` SCM has been rewritten with a few key things in mind:

  * More idiomatic use of the Rake DSL. (Use of prerequisites)
  * Wider use of the special wrapper script and environmental variables we
    need to tame Git for non-interactive use.
  * Not to try to clone to check repository access in `git:check`.
  * Always to re-set the remote URL (https://github.com/capistrano/capistrano/issues/373).
  * To use `--mirror` and `remote update` to avoid the Git `reset --hard` dance
  * To clone from the cache into each release with a shallow clone already
    targeted at the selected branch.

The entry point to the `scm` namespace has already been changed, the entry
point had previously been `scm:update`, however as *update* is a word also in
the Git vocabulary, which doesn't map well to other SCM implementations, I've
made the entry point `scm:create_release`, which shouldn't conflict with any
other implementations.

These changes might not be applicable to all versions of Git, but I'd rather
start with a clean, *ideal* implementation and work backwards than start with
the lowest common denominator.