Implement git authentication

This commit updates git2-rs to get the implementation of the authentication
callback in libgit2. Additionally this specifies the callback for whenever we're
cloning into the database or updating submodules.

Currently cargo will *not* ask for user input, but rather require you to have
authentication configured in git through some other means. There are currently
two primary methods of doing so:

1. Any SSH key in the local ssh-agent will be used for authentication with SSH
   repositories.
2. The `credential.helper` interface (as specified by gitcredential(7)) has been
   implemented in git2-rs to allow for picking up of storage of passwords in the
   local git cache or keychain.

If these two methods fail, then there will likely be an authentication failure.
Interactive prompts for authentication have not been implemented as there is no
method to currently enter your password into the terminal silently.

A consequence of this commit is that cargo now depends on libssh2. A package was
created to create a static copy of libssh2, and this is now linked into cargo by
default.

Closes #493
Blow away corrupt database repos

If a repository is corrupt, blow it away entirely and start from scratch instead
of returning an error.