rustpkg: Implement URL-like package IDs

This patch implements package IDs like
github.com/catamorphism/test-pkg.

To support such package IDs, I changed the PkgId struct to contain
a LocalPath and a RemotePath field, where the RemotePath reflects
the actual URL and the LocalPath reflects the file name of the cached
copy. Right now, the only difference is that the local path doesn't
contain dashes, but this will change when we implement #6407.

Also, PkgIds now have a short_name field -- though the short name
can be derived from the LocalPath, I thought it was cleaner not to
call option::get() wantonly.
rustpkg: Tests for well-formed and ill-formed package IDs...

...and cleanup, making how we handle version numbers more rational
(specifically, not passing in a versioned name to rustc
with the -o flag), and removing unused code.
vim: swap operator is gone
vim: no more drop blocks
vim: `be` is still a reserved keyword
clone: clarify docstring
add a DeepClone trait

for deep copies through shared ownership boundaries
Allow static strings to be used with keyword checks
rc: fix tests
remove deriving_eq, deriving_iter_bytes, deriving_clone (deprecated in 0.6)
Merge type_span and type_def, and ditto with value_span and value_def
auto merge of #6495 : thestinger/rust/vim, r=luqmana
auto merge of #6498 : thestinger/rust/deep_clone, r=thestinger

This is mostly for `std::rc` and `std::arc` (but I haven't implemented it for ARC yet).

Implementing it correctly for managed boxes is *very* non-trivial. It would probably require an unholy mix of reflection and TLS.
auto merge of #6418 : catamorphism/rust/rustpkg, r=catamorphism

r? @brson This patch implements package IDs like
github.com/catamorphism/test-pkg.

To support such package IDs, I changed the PkgId struct to contain
a LocalPath and a RemotePath field, where the RemotePath reflects
the actual URL and the LocalPath reflects the file name of the cached
copy. Right now, the only difference is that the local path doesn't
contain dashes, but this will change when we implement #6407.

Also, PkgIds now have a short_name field -- though the short name
can be derived from the LocalPath, I thought it was cleaner not to
call option::get() wantonly.
auto merge of #6499 : dotdash/rust/static_keywords, r=thestinger
auto merge of #6500 : kud1ing/rust/cleanup, r=bstrie

Fixes #6445
auto merge of #6501 : june0cho/rust/incoming, r=graydon

Fix #3783.
core: Update clone docs