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.
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
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
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.