Implement a package id specification format
Hook up `cargo update` to pkgids
Add a pkgid id command and update docopt docs
Add some HTML docs for pkgid specs
auto merge of #618 : alexcrichton/cargo/issue-593, r=wycats

This gives cargo a way to uniquely reference a package within a dependency graph. This is currently only used for `cargo update` and `cargo pkgid`, but this will extend in the future to possible configuration keys in the manifest, other commands like `clean`, etc.

Closes #593