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.
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.
Run tests in parallel

Give each test is own root inside of the shared root to ensure that the tests
are still isolated from one another.
Add a .travis.yml
Update hammer.rs