Dedup overrides by name

Overrides are only queried by name, and it's possible for multiple to show up,
and just pick the first one.

Closes #461
Implement manifest profiles

For documentation, see the included documentation in the commit.
Re-enable passing -g to rustc

Now that there is a way to disable debuginfo for a build, we can go back to
passing it by default. Any bugs in debuginfo will get weeded out by specifying
`debug = false` in the profile.
auto merge of #507 : alexcrichton/cargo/profiles, r=brson

For documentation, see the included documentation in the commit.
Turn --git on by default for `cargo-new`.

This adds a command-line --no-git option to disable this behavior, as well as
adding a global config section for `git = false`. While I was at it I write some
documentation for the configuration format that cargo uses.
auto merge of #470 : alexcrichton/cargo/cargo-new-git, r=brson

This adds a command-line --no-git option to disable this behavior, as well as
adding a global config section for `git = false`. While I was at it I write some
documentation for the configuration format that cargo uses.
auto merge of #474 : alexcrichton/cargo/issue-461, r=wycats

Overrides are only queried by name, and it's possible for multiple to show up,
and just pick the first one.

Closes #461 

r? @wycats -- I'm not convinced this is correct
Implement `features`

This feature was outlined in #385 [1], and documentation has been included as
part of this commit.

[1]: https://github.com/rust-lang/cargo/issues/385#issuecomment-53917539