Revert "auto merge of #8745 : brson/rust/metadata, r=cmr"

This reverts commit 491bc3568c87dadaba4d342135bd308961c6e0ef, reversing
changes made to 05f1bbba16912f63b562a7847801823872f89ec6.
auto merge of #8751 : brson/rust/metadata-revert, r=brson

This reverts commit 491bc3568c87dadaba4d342135bd308961c6e0ef, reversing
changes made to 05f1bbba16912f63b562a7847801823872f89ec6.

I've heard reports that this broke something. Don't know details yet.
auto merge of #8750 : kballard/rust/str-opt-variant, r=thestinger

Add _opt variants to from_bytes, from_bytes_owned, and from_bytes_slice.
These variants return an Option instead of raising a condition/failing.
Initial sketching out of the new path module

Define the basic types, and the GenericPath trait.

This module is currently called path2. It will be renamed later.
path2: Implement PosixPath
path2: Start reimplementing in terms of ~[u8] instead of ~str

As documented in #7225, we cannot rely on paths being representable in
utf-8. Specifically, Linux allows anything (besides NUL) in a path.
Redesign GenericPath in light of this.

PosixPath hasn't been reimplemented yet for ~[u8].
path2: Reimplement PosixPath in terms of ~[u8]
path2: Update all the tests for the new [u8]-based approach