Account for trailing / in URLs when determining on-disk location. Fixes #84.

No tests because there's no preexisting network tests.
Add a hack to make github urls case-insensitive. Fixes #84
Add tests for URL canonicalization and canonicalize .git extensions
Future proof URL canonicalization tests
Merge pull request #88 from brson/fix

Basic URL canonicalization. Fixes #84
Revert "Basic URL canonicalization. Fixes #84"
Merge pull request #89 from rust-lang/revert-88-fix

Revert "Basic URL canonicalization. Fixes #84"
Revert "Merge pull request #89 from rust-lang/revert-88-fix"

This reverts commit 09e52c88d8bf729570e642af4e51c3985672b501, reversing
changes made to bc31d2a23b9ac6b06042e89c9e6ed98474859bf5.
auto merge of #90 : brson/cargo/fix, r=alexcrichton

This reverts commit 09e52c88d8bf729570e642af4e51c3985672b501, reversing
changes made to bc31d2a23b9ac6b06042e89c9e6ed98474859bf5.
Generalise `find_project` to not always search parents.

Also, add a helper around `find_project` that returns `dir/file` rather
than just `dir`.
Check for the existence of Cargo.toml when reading packages.

Fixes #82.
auto merge of #83 : huonw/cargo/manifest-search, r=alexcrichton,alexcrichton
Don't infinitely recurse on cyclic path deps

Instead, keep a table of what we've visited and halt recursion whenever we
re-visit a package.

Closes #77