Initial stab at integration tests

At the same time, we started adding a generic error handling concept to
Cargo.

The idea is that every Result gets converted to a CargoError, which
includes all the information that Cargo needs to print out a friendly
human error message and exit gracefully.
Trying to shell out
Help me Alexwan Kenobi
Bugs?
Make everything pub for Alex
A passing test
Integration tests working

Next up: cleanup
Move test build into target
Clean up dynamic option checks
Lots of cleanup and more generic commands

Started to extract some of the generic behavior across all commands into
`execute_main` so that the commands themselves just need to operate
against structs (for JSON in and Flags)
Merge branch 'integration-tests'

Conflicts:
	Makefile
	src/bin/cargo-read-manifest.rs
	src/bin/cargo-rustc.rs
	src/cargo/mod.rs
	src/cargo/util/process_builder.rs
	tests/test_cargo_compile.rs