Be sure to lock purely optional dependencies

Previously all features were traversed when adding information to the lockfile,
but the traversal forgot to add optional dependencies that did not have a
corresponding feature.

Closes #801
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
Build lib tests and libraries in parallel

When building unit tests for a library, we don't need the library itself to be
built beforehand, so the two can be built in parallel. If the crate takes awhile
to compile, this shows some excellent wall-time speedups.
More aggresively move_into_the_past for tests

Right now we're accidentally not actually leveraging this function well in some
tests due to this sequence of events:

1. The tests run at time X, building artifacts that remember the fingerprint is
   at time X.
2. The entire project is moved back one hour to (X-1).
3. A new file is created, at time X (second-level resolution on some systems).
4. On a rebuild, the maximum mtime is still X (due to the new file).

For this reason there are some more calls to move_into_the_past() to push files
back another hour after they've been created to make sure the maximum mtime is
(X-1), or something different than X.
auto merge of #803 : alexcrichton/cargo/fix-some-tests, r=alexcrichton

Right now we're accidentally not actually leveraging this function well in some
tests due to this sequence of events:

1. The tests run at time X, building artifacts that remember the fingerprint is
   at time X.
2. The entire project is moved back one hour to (X-1).
3. A new file is created, at time X (second-level resolution on some systems).
4. On a rebuild, the maximum mtime is still X (due to the new file).

For this reason there are some more calls to move_into_the_past() to push files
back another hour after they've been created to make sure the maximum mtime is
(X-1), or something different than X.
auto merge of #802 : alexcrichton/cargo/issue-801, r=brson

Previously all features were traversed when adding information to the lockfile,
but the traversal forgot to add optional dependencies that did not have a
corresponding feature.

Closes #801
Fix some more flaky tests

At the same time, also improve the deprecation message for the old build command
to be a little more descriptive about how to migrate
Fix up some styling on the build-script docs
auto merge of #804 : alexcrichton/cargo/moar-fixes, r=alexcrichton

Some flaky test improvements as well as some updates to the styling of the docs.
auto merge of #799 : alexcrichton/cargo/moar-parallel, r=brson

When building unit tests for a library, we don't need the library itself to be
built beforehand, so the two can be built in parallel. If the crate takes awhile
to compile, this shows some excellent wall-time speedups.
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