RFC: path reform

This RFC reforms the design of the `std::path` module in preparation for API
stabilization. The path API must deal with many competing demands, and the
current design handles many of them, but suffers from some significant problems
given in "Motivation" below. The RFC proposes a redesign modeled loosely on the
current API that addresses these problems while maintaining the advantages of
the current design.

*Thanks to @kballard, who helped spark some of the initial ideas over Ike's sandwiches!*

[Rendered](https://github.com/aturon/rfcs/blob/path-reform/text/0000-path-reform.md)
Could we get more details about how the underlying data structure may look? If it's going to be an unsized struct other than a newtype wrapper around `[u8]`/`str`, then you must consider than any extra field in the struct won't be stored inline (i.e. in the stack). For example: `struct Path { sepidx: Option<uint>, data: [u8] }`, then `&Path` is two-word long (just like `&[u8]`), and it's non obvious how to correctly create a `&Path` from `&[u8]`.