Parse escaped spaces in makefile dependencies

This means that if a project has a file with a space in the name it will
properly have its freshness calculated as opposed to always having it as a
candidate to be rebuilt.

Closes #648
Let the help command work consistently everywhere

This adds a dummy help command so that it's usage can be documented with docopt!

Also adds help flags to all of the subcommands that were missing them. Without
that `cargo help sub-command` shows Invalid Argument before the usage text.
Remote `unused` lint

It's causing tons of not-very-helpful errors that are breaking the build.
auto merge of #670 : bkoropoff/cargo/unused-everywhere, r=alexcrichton

I'm not sure what changed, but unused value lints were popping up everwhere when I tried to build today.

This turns on the `if let` feature since it allows rewriting a lot of calls to `Option::map` that were only being used for their side effects into a clean form.  Cargo seems as good of a place as any to dogfood it.
auto merge of #667 : jakerr/cargo/help-help, r=alexcrichton

This adds a dummy help command so that it's usage can be documented with docopt! This lets `cargo help help` work.

Also adds help flags to all of the subcommands that were missing them. Without
that `cargo help sub-command` shows Invalid Argument before the usage text.
Clean up some uses of `Option::map` only for its side effects
Sort feature lists for fingerprint hashing

Otherwise the order was nondeterministic likely due to some hash map along the
way being used to deduplicate the set of features.

Closes #665
auto merge of #672 : bkoropoff/cargo/option-map-cleanup, r=alexcrichton

This reduces syntactic noise and is a good use case for `if let`, which I turned on.
Remove the notion of "primary" from Context

Now that we have selective testing, this no longer makes any sense and all
queries to the path layout need to be based on the package being queried for.
This removes the primary flag from the Context, and requires that the `layout`
method have a local Package available

cc servo/servo#3580
auto merge of #675 : alexcrichton/cargo/fix-selective-test, r=brson

Now that we have selective testing, this no longer makes any sense and all
queries to the path layout need to be based on the package being queried for.
This removes the primary flag from the Context, and requires that the `layout`
method have a local Package available

cc servo/servo#3580
auto merge of #663 : alexcrichton/cargo/issue-648, r=brson

This means that if a project has a file with a space in the name it will
properly have its freshness calculated as opposed to always having it as a
candidate to be rebuilt.

Closes #648
Don't always run doc tests for the root package

When using `cargo test -p`, be sure to run only the doc tests for the package
actually being tested.

Closes #660
auto merge of #661 : alexcrichton/cargo/issue-660, r=brson

When using `cargo test -p`, be sure to run only the doc tests for the package
actually being tested.

Closes #660
Fix warnings for constant names
auto merge of #673 : alexcrichton/cargo/issue-665, r=brson

Otherwise the order was nondeterministic likely due to some hash map along the
way being used to deduplicate the set of features.

Closes #665
Make sure dev-deps are compiled for examples

Examples are classified as binaries, but do not have the `test` flag set on
their Profile. They do, however, have their environment set to `test`. Be sure
to place them into the `tests` bucket so they have development dependencies
available for their compilation.
auto merge of #671 : alexcrichton/cargo/issue-668, r=brson

Examples are classified as binaries, but do not have the `test` flag set on
their Profile. They do, however, have their environment set to `test`. Be sure
to place them into the `tests` bucket so they have development dependencies
available for their compilation.

Closes #668
Pass features along to rustdoc
auto merge of #676 : jdeseno/cargo/warnings, r=alexcrichton
Use the right package for doc test variables