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
Generate a lockfile sooner in `cargo build`

It's quite annoying if you update a dependency, but it takes you awhile to get
the dependency building. Previously the dependency graph would have to be
updated each time because the lockfile was only written *after* a successful
build.

Other tools like `cargo generate-lockfile` will already generate a lockfile at
any time, so just make it easier by moving it up in the compilation process.
auto merge of #506 : alexcrichton/cargo/sooner-lockfile, r=wycats

It's quite annoying if you update a dependency, but it takes you awhile to get
the dependency building. Previously the dependency graph would have to be
updated each time because the lockfile was only written *after* a successful
build.

Other tools like `cargo generate-lockfile` will already generate a lockfile at
any time, so just make it easier by moving it up in the compilation process.
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
Do not pass static lib targets to rustc
auto merge of #508 : carllerche/cargo/static-lib-and-bin-bug, r=alexcrichton

rustc cannot take .a files, so don't pass them
Revert "cargo/new: add test for `--travis flag; also update Cargo.lock"

This reverts commit 4ee5fd352a0071f4200fe9f3dfa4aeebfe164c18.
cargo/new: add a test for the `--travis` flag
Merge with upstream and update Cargo.lock

Conflicts:
	src/bin/new.rs
	src/cargo/ops/cargo_new.rs