Update to new-style rustc CLI args
auto merge of #1075 : cmr/cargo/rustc-vverbose, r=alexcrichton

Closes #1073
Use std::collections::{BTreeSet, BTreeMap} instead of std::collections::{TreeSet, TreeMap}.
Fix readme instructions for submodules
auto merge of #1078 : alexcrichton/cargo/issue-1071-readme-fix, r=alexcrichton
Merge branch 'pr-btree' of https://github.com/akiss77/cargo into akiss77-pr-btree
Update to rust master
auto merge of #1079 : alexcrichton/cargo/update-rust, r=alexcrichton

Continuation of #1077
Closes https://github.com/rust-lang/cargo/pull/1079
Update to rust master

rust-lang/rust#19253 and rust-lang/rust@25f8051 have introduced changes
to the namespacing within the std::collections::hash_map, breaking some
of Cargo code which imported these.

rust-lang/rust@cf350ea, implementing changes proposed by RFC #344, have
also broken some code which relies on hash_set::SetItems (now renamed to
hash_set::Iter).

This commit fixes the incompatibilities: imports of
std::collections::hash_map::{Occupied, Vacant} have been replaced by
imports of std::collections::hash_map::Entry::{Occupied, Vacant} and one
instance where the SetItems has been used was replaced by the proper
usage of Iter.
Bump required rust version

Latest changes require that we build with a later Rust nightly
Allow the location of `~/.cargo` to be overridden via `CARGO_HOME` env var.

I intend to use this to allow many copies of the Rust toolchain to coexist.
auto merge of #1084 : brson/cargo/home, r=alexcrichton

...ar.

I intend to use this to allow many copies of the Rust toolchain to coexist.

My project for managing Rust toolchains: https://github.com/brson/multirust
Bump version numbers

Updated to use the latest 2014-12-23 nightly and newest versions of
crates url and docopt.rs
Migrate to rustc-serialize

As per rust-lang/rust@b04bc5c, move all Encodable and Decodable deriving
modes to RustcEncodable and RustcDecodable, and also extern the
rustc-serialize crate instead of the former serialize one.
Update references to renamed traits

As per rust-lang/rust@f8cfd24, rename references to slice::Items to
slice::Iter and slice::MutItems to slice::IterMut
Handle from_utf8 new return type

As per rust-lang/rust@9b99436, the return type of from_utf8 has been
changed from Option to Result. Consequently, update code which relied on
this return type to work with Ok(...) and Err(...) instead of Some(...)
and None
Fix fn type mismatch error

rustc complains that we cannot assign two different fn's to a single
object within an if-else block. I was not able to figure out what causes
this; so deferring the execution of the particular function is a
reasonable fallback. Not very elegant and should be changed to something
with less boilerplate
Update dependency info

Bump to newest versions of several libraries
Add Levenshtein distance implementation

Copy lev_distance.rs verbatim from Rust since str::lev_distance has been
deprecated by rust-lang/rust@9b99436 with no replacement and change code
to use it instead of the deprecated function
Update Cargo.lock for newest dependencies