Move generated tarballs under target/package

At the same time this commit renames the `.tar.gz` extension to `.crate`. This
helps our perception on Windows as we're not trying to leave them out in the
dark, and we'd also like the ability to modify the format later in the future.

Closes #777
Fix infinite recursion when invoked without args
TcpListener::bind now takes 1 argument instead of 2
update rust-encoding

https://github.com/alexcrichton/toml-rs/pull/28 also needs to be in here to truly fix the build
Add 'did you mean...' message when a subcommand is not found.
Merge branch 'fix-build-auth-test.rs' of https://github.com/pwoolcoc/cargo into update
Merge branch 'add-did-you-mean' of https://github.com/pwoolcoc/cargo into update
Merge branch 'args' of https://github.com/ebfe/cargo into update
Fix a tidy issue with src/bin/cargo.rs
Pass `-C prefer-dynamic` for dylib dependencies
Update with breaking changes from tonight's nigthly
auto merge of #811 : alexcrichton/cargo/update, r=alexcrichton

Need to land them all as one unit to actually pass the whole test suite.
auto merge of #798 : alexcrichton/cargo/issue-777, r=brson

At the same time this commit renames the `.tar.gz` extension to `.crate`. This
helps our perception on Windows as we're not trying to leave them out in the
dark, and we'd also like the ability to modify the format later in the future.

Closes #777
Fix cross compiling with a build script

Previously there was a mixup of where the build script was getting compiled into
as well as where the output was going to. This commit fixes the problems for
now, but still has room for improvement in the future.

Build scripts themselves are now unconditionally built into `target/build/..`
because they're compiled for the host platform. Their outputs are in
`target/$target/build/..` as expected.
Fix build scripts and double-compiled packages

This commit fixes support for build scripts in packages which are compiled for
both the host and target architectures. The support was previously hindered by
the fact that the build script was always invoked precisely once for the target
architecture unconditionally.

This adds support for build scripts themselves to depend on build scripts, and
everything should "just work" if build scripts respect their environment
variables.
auto merge of #813 : alexcrichton/cargo/build-cmd-cross-compile, r=brson

These commits contain a number of improvements to the usage of build scripts when cross compiling. A few erroneous assumptions were made to start out with, and this also fixes the long-standing bug of using build scripts in host packages (e.g. plugins and build dependencies).
Another fix for cross-compiled build scripts

Previously the host/target requirement for packages was not correctly calculated
as dependency edges to build dependencies weren't traversed by accident.
auto merge of #815 : alexcrichton/cargo/another-fix-oh-by-wait-i-verified-this-one-its-ok, r=alexcrichton

Previously the host/target requirement for packages was not correctly calculated
as dependency edges to build dependencies weren't traversed by accident.
Clarify the documentation on `cargo test`

Closes #812
Respect Target target vs host exe suffix distinction.