Canonicalize github urls for the resolver

In addition to canonicalizing checkout locations, this canonicalizes packages
for the resolver. This allows two dependencies with slightly different urls
pointing to the same repository to resolve to the same location and package.

Closes #104
auto merge of #123 : alexcrichton/cargo/canonicalize-github-urls, r=wycats

In addition to canonicalizing checkout locations, this canonicalizes packages
for the resolver. This allows two dependencies with slightly different urls
pointing to the same repository to resolve to the same location and package.

Closes #104
url.path is now a Path, not a String
Use #![crate_name] instead of #![crate_id]
Use --print-file-name instead of --crate-file-name
auto merge of #128 : riccieri/cargo/nightly-fix, r=alexcrichton

On rust-lang/rust@ed47c479d73fd7b57d3b493e03c74e2932733163 (which landed yesterday via rust-lang/rust@b8ef5cf1310a7b1e31d0993885d867a6804597ad), `url.path` now returns a `Path`, not a `String`. This one-line patch makes cargo compile again (at least as of rust-lang/rust@b8ef5cf1310a7b1e31d0993885d867a6804597ad, the `crate_id` changes haven't reached me yet).
auto merge of #129 : riccieri/cargo/no_more_crate_id, r=alexcrichton

This solves warnings about the use of the deprecated `#![crate_id]` attribute, as well as the deprecated `--crate-file-name` command line option. See rust-lang/rust@c3ef04be5589901e7f3d9428ebe8f1eb2bdca7e4 for details.

Note that this won't compile on the current master without #128 (or equivalent). I can rebase after a fix lands
Update with master changes
auto merge of #131 : alexcrichton/cargo/update-to-master, r=update
Add documentation about cargo nightlies
Merge pull request #134 from alexcrichton/nightlies

Add documentation about cargo nightlies
Support for multiple and cleaner build commands
auto merge of #136 : Tomaka17/cargo/multiple-build-cmds, r=alexcrichton

Closes #69

Adds a new syntax for the `build = ` command:

```
build = [
    ["./configure"],
    ["make", "lib/libovr.a"],
    ["/bin/mkdir", "target"],
    ["/bin/cp", "lib/libovr.a", "target/"]
]
```

The current syntax `build = "make"` still works.

`build = [ "a", "b" ]` is forbidden because it is ambiguous.
Add --release and related refactoring
auto merge of #140 : rust-lang/cargo/release, r=carllerche
fingerprint: Recover from fs::stat errors

Fingerprinting will fail at an fs::stat() call if there is a broken
symlink in a package's directory.  This commit recovers from fs::stat()
errors on broken symlinks by treating them as having mtime 0, which
should not affect the overall fingerprint.

Fix #135
Ignore the broken symlinks test on windows
auto merge of #139 : tomjakubowski/cargo/fix-symlink-blowup, r=alexcrichton

Fingerprinting will fail at an `fs::stat()` call if there is a symlink in
a package's directory pointing to a non-existent file or directory.
This commit recovers from an `fs::stat(`) error on these bogus symlinks by
faking an mtime of 0, which should not affect the overall fingerprint.

Fix #135
Warn about missing [[lib]] and [[bin]] sections

Closes #120