Support cross compiling to triples without dylibs

Discovering the prefix/suffix needs to understand that it's not actually
available.

Closes #442
Don't fail!() when rustdoc fails to run

The return value of `err.output()` will be `None` if the rustdoc executable
failed to spawn, in which case we can give a more graceful error message.

Closes #481
Fix relative override paths

Relative paths are now considered relative to the directory containing the
`.cargo/config` file specifying the relative path.

I also merge ConfigValueValue into ConfigValue by moving the Path directly next
to the String that defined it so we can track which strings came from which
paths.

Closes #458
Pass native output directories of dependencies

This is often useful for picking up things like headers files from `*-sys`
packages when they had to compile locally (or perhaps for pkg-config).

Closes #449
auto merge of #469 : alexcrichton/cargo/issue-442, r=brson

Discovering the prefix/suffix needs to understand that it's not actually
available.

Closes #442
auto merge of #471 : alexcrichton/cargo/issue-449, r=brson

This is often useful for picking up things like headers files from `*-sys`
packages when they had to compile locally (or perhaps for pkg-config).

Closes #449
auto merge of #491 : alexcrichton/cargo/issue-481, r=brson

The return value of `err.output()` will be `None` if the rustdoc executable
failed to spawn, in which case we can give a more graceful error message.

Closes #481
auto merge of #475 : alexcrichton/cargo/issue-458, r=brson

Relative paths are now considered relative to the directory containing the
`.cargo/config` file specifying the relative path.

I also merge ConfigValueValue into ConfigValue by moving the Path directly next
to the String that defined it so we can track which strings came from which
paths.

Closes #458
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.
Wheeeeeee
Another upgrade