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
Implement `features`

This feature was outlined in #385 [1], and documentation has been included as
part of this commit.

[1]: https://github.com/rust-lang/cargo/issues/385#issuecomment-53917539