Track Rust master
Make `cargo foo` work
WIP3
Improvements to transitive dependency infra

Initial work to enable cross-source transitive dependencies.
Paths nested in paths
Support nested paths in git and path sources
Source::update takes mutable self
PathSource - load packages in update fn
Initial pass at boxed errors

The next step is to clean up the error handling in general so that
failure cases produce good errors.
Squelch warnings and minor cleanup
Add cargo_try!
Add FromError
Require human-tagging errors
Rename  to
Add mark_human
Add CargoError::with_cause

This allows concrete implementations with a `cause` field to have a
better implementation than converting the entire original error into a
concrete representation.
Optimized mark_human for ConcreteCargoError
Provide more context on process errors

When printing an error for a failed process execution, the stdout/stderr are
included for inspection.
Allow custom precompile commands

This commit enables support for custom precompilation commands to be triggered
before a package builds via rustc. The current interface is to have
`build = "foo"` in the `[project]` section of Cargo.toml and cargo will just
execute the exact command given.
Make CARGO_BIN_PATH optional for tests

This allows easier use of running tests by hand.