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.