Don't pass around Option<&[T]> for libs/bins

These ended up being Some([]) much of the time which was confusing because it
was being interpreted incorrectly. By passing just slices we know when there's
an element or not.
Fix dependencies during tests

A library target is needed for testing if any examples or integration tests are
being built, similarly with bin targets.
Fix integration tests with same names as libs

Use extra-filename mixins to ensure that these names never clash.
Ensure binaries are present for tests

Also make sure that binaries are named appropriately so they don't clash.
auto merge of #250 : alexcrichton/cargo/test-deps, r=wycats

* Ensure that binaries are present for integration tests (as well as libraries)
* Ensure that same-named binaries/libs/tests never clash. Examples are excluded for now because they should probably be built to a separate directory.
Fix `cargo test` with a dylib when run twice

The filename of the test for a dylib wasn't being calcuated correctly, so when
freshness was copying data over it ended up copying the same file twice.
Print unknown errors with --verbose
Only copy over the native output directory once

Previously it was copying once per target, not once per package.
auto merge of #249 : alexcrichton/cargo/fix-test-twice, r=wycats

These are both related to destroying the build directory and then recreating it.
Bootstrap cargo with cargo