Allow plugins to have native dylib dependencies

Ensure that the dynamic linker search path contains the location of the output
directories for these dependencies when compiling with plugins.

Closes #597
Fix building with current rustc
Fit text within window in Safari when under 629px in width
auto merge of #627 : dotdash/cargo/rustup, r=alexcrichton
auto merge of #632 : EduardoBautista/cargo/fix-width-in-safari, r=alexcrichton

Text is not responsive under 629px in Safari.
auto merge of #617 : alexcrichton/cargo/issue-597, r=brson

Ensure that the dynamic linker search path contains the location of the output
directories for these dependencies when compiling with plugins.

Closes #597
Remove the deprecated -u flag

This flag has been deprecated in favor of `cargo update` for quite some time
now.
Update to rust master

Also stop denying all warnings and only deny some common warnings. Allow
warnings such as deprecation.

Closes #634
auto merge of #635 : alexcrichton/cargo/update, r=alexcrichton

Also stop denying all warnings and only deny some common warnings. Allow
warnings such as deprecation.

Closes #634
auto merge of #625 : alexcrichton/cargo/no-more-deprecated, r=brson

This flag has been deprecated in favor of `cargo update` for quite some time
now.

r? @brson
Allow updating to a precise revision

This commit adds a flag, --precise, to cargo update. This flag is used to update
a dependency to precisely an exact revision (or branch) as part of an update
step. For git repositories the argument is some form of reference, while
registry packages this will be a version number.

The flag --precise forces a non-aggressive update and will fail if the
--aggresive flag is specified.

Closes #484
auto merge of #624 : alexcrichton/cargo/issue-484, r=wycats

This commit adds a flag, --precise, to cargo update. This flag is used to update
a dependency to precisely an exact revision (or branch) as part of an update
step. For git repositories the argument is some form of reference, while
registry packages this will be a version number.

The flag --precise forces a non-aggressive update and will fail if the
--aggresive flag is specified.

Closes #484

r? @wycats
Refine dependencies on dev-deps

Currently whenever a dev-dep is brought in to the build process the entire
library is rebuilt, but this is just unnecessary recompilation because the
library *can't* depend on the dev-dep.

This commit refines the dependency graph so the lib stage only depends on
transitive dependencies (non-dev-deps), and a new stage for tests was added
which depends on the packages libraries *and* the dev-deps. This way only the
test are rebuilt when dev-deps change, not libraries.
Allow "cycles" through dev-deps

Development dependencies can never be the root of a cycle because nothing
depends on a development dependency, so there's no need to track the start of a
cycle at the edge going out to a development dependency.

If a cycle is later detected, it will still be reported.
Fix the dependency graph with root pkg cycles

If the root package ended up depending on itself through some development
dependency (technically not a cycle), then the resolve phase would currently
overwrite some previous result, destroying the progress. By registering the root
package as seen early on this prevents the overwriting from happening and
instead appending happens.
Fix dependencies linking to the local package

This is a legitimate possibility which doesn't necessarily imply a cycle, so the
case needs to be handled.
Add a test for #432

All problems have been fixed in the previous commits, and this now closes #432