Ignore EPERM when scanning for packages

We won't make much progress reporting the error back up the chain, so we may as
well carry on!
Update docs url
auto merge of #721 : EduardoBautista/cargo/update-docs-url, r=alexcrichton
document rpath option in manifest
use rpath defaults
auto merge of #722 : blaenk/cargo/rpath-docs, r=alexcrichton

The `rpath` option was added (awesome!) but not documented.
Replace usage of `get_ref`
Add general doccomments
Merge commit 'jdeseno/remove-deprecated' into update
Merge remote-tracking branch 'tomaka/add-docs' into update
Update dependencies to unbreak the build
auto merge of #732 : alexcrichton/cargo/update, r=alexcrichton

Also merge some other PRs while I'm at it
Compile deps with optimizations for benches

Previously only the local package was erroneously compiled with optimizations.

Closes #728
Bash completion initial support
Add bashcomp to Makefile.in
Create bash_completion.d directory
Update semver to have `^` be the default operator
Split out encoding from `core::resolver` to a submodule

Same exported hierarchy, just some internal orgainzational changes.
Implement resolution of version requirements

This commit extends the support in cargo's resolver to start resolving packages
with multiple versions as well as package requirements. This is a crucial step
forward when impelmenting the cargo registry as multiple versions will be
uploaded to the registry quite quickly!

This implements a fairly naive solution which should at least help cargo get out
the gates initially. This impelments a depth-first-search of the pacakage
dependency graph with a few sorting heuristics along the way to help out
resolution as it goes along.

Resolution errors will likely improve over time, but this commit does make an
effort to try to get some good error messages right off the bat.
Make PackageId cheap to clone

These are cloned a massive number of times during resolution, so let's make them
much cheaper to clone with an Arc. This uses Arc instead of Rc because the
fiddly bits in job_queue have a PackageId cross task boundaries for parallelism.