Enable execution without cargo in PATH

This allows usage of cargo without all the executables in your PATH, you only
need to be able to reach the first one.
Update hammer.rs to be compatible with the current rust master
Add support for non-transitive dependencies

Development and test dependencies should not be transitively pulled in.
For example, if I use rust-curl, and it happens to use hamcrest for
testing, that does not mean I depend on hamcrest.
Added [dev-dependencies] sections to Cargo.toml

If you put a dependency in [dev-dependencies], it will only be
used when building (or testing) your packages, not other packages that
depend on it.
Fix up dev-dependencies
auto merge of #113 : rust-lang/cargo/dev-deps, r=alexcrichton

Development dependencies are included when building or testing the current package, but not packages that depend on it:

```toml
[dev-dependencies.hamcrest]

git = "https://github.com/carllerche/hamcrest-rust.git"
```
auto merge of #106 : alexcrichton/cargo/no-path, r=wycats

This allows usage of cargo without all the executables in your PATH, you only
need to be able to reach the first one.