rustpkg: Handle local git repositories

rustpkg can now build code from a local git repository. In the
case where the local repo is in a directory not in the RUST_PATH,
it checks out the repository into a directory in the first workspace
in the RUST_PATH.

The tests no longer try to connect to github.com, which should
solve some of the sporadic failures we've been seeing.
auto merge of #7681 : catamorphism/rust/rustpkg-local-repos, r=catamorphism

r? @graydon rustpkg can now build code from a local git repository. In the
case where the local repo is in a directory not in the RUST_PATH,
it checks out the repository into a directory in the first workspace
in the RUST_PATH.

The tests no longer try to connect to github.com, which should
solve some of the sporadic failures we've been seeing.
std: add consuming iterators for `HashMap` and `HashSet`
auto merge of #7806 : apasel422/rust/hash_consume, r=catamorphism

This partially addresses #7719.
ringbuf: Implement DoubleEndedIterator
auto merge of #7808 : blake2-ppc/rust/ringbuf, r=thestinger
hashmap: Remove .mutate_values() which is replaced by .mut_iter()
hashmap: Iterators for hashset diff, sym. diff, intersec, union

Implement the difference, union, etc iterators with the help of a custom
iterator combinator with explicit closure environment. Reported issue #7814
to be able to use the std::iterator filter combinator.
auto merge of #7815 : blake2-ppc/rust/hashmap-iterators, r=huonw

Implement set difference, sym. difference, intersection and union using Iterators.

The set methods are left since they are part of the Set trait. A grep over the tree indicates that the four hashset operations have no users at all.

Also remove HashMap::mutate_values since it is unused, replaced by .mut_iter(), and not part of a trait.
remove headers from unique vectors
auto merge of #7816 : thestinger/rust/header, r=huonw

Note that the headers are still on `~[T]` when `T` is managed. This is continued from #7605, which removed all the code relying on the headers and removed them from `~T` for non-managed `T`.