rustc: Prevent false positives in crate loading

Previously, any library of the pattern `lib<name>-<hash>-<version>.so` was
>considered a candidate (rightly so) for loading a crate. Sets are generated for
each unique `<hash>`, and then from these sets a candidate is selected. If a set
contained more than one element, then it immediately generated an error saying
that multiple copies of the same dylib were found.

This is incorrect because each candidate needs to be validated to actually
contain a rust library (valid metadata). This commit alters the logic to filter
each set of candidates for a hash to only libraries which are actually rust
libraries. This means that if multiple false positives are found with the right
name pattern, they're all ignored.

Closes #13010
auto merge of #13017 : alexcrichton/rust/issue-13010, r=huonw

Previously, any library of the pattern `lib<name>-<hash>-<version>.so` was
>considered a candidate (rightly so) for loading a crate. Sets are generated for
each unique `<hash>`, and then from these sets a candidate is selected. If a set
contained more than one element, then it immediately generated an error saying
that multiple copies of the same dylib were found.

This is incorrect because each candidate needs to be validated to actually
contain a rust library (valid metadata). This commit alters the logic to filter
each set of candidates for a hash to only libraries which are actually rust
libraries. This means that if multiple false positives are found with the right
name pattern, they're all ignored.

Closes #13010
std: Add Vec to the prelude

This is an incredibly common type, and it is expected to be used in many many
places. This type should be in the prelude.
rustc: Default the ~[] lint to allow for now

Most of the standard distribution is still using ~[] instead of Vec, so this
lint is essentially useless currently. When the standard distribution has been
ported to not use ~[], then we can turn the lint back on.
Removing imports of std::vec_ng::Vec

It's now in the prelude.
auto merge of #13020 : alexcrichton/rust/vec, r=brson

The commits have the details.
Register new snapshots
auto merge of #13026 : alexcrichton/rust/snapshots, r=huonw
Remove libc from std

These wrappers are bound to a specific libc, and they don't need to be part of
libstd.
fix fallout from std::libc separation
Add unrecognized_lint
fix more fallout

libc: remove stray impl in win32
rand: fix libc fallout
libc: make windows happy
Change how the readdir/opendir hack works
ever more fallout
libc: link to libc and libm