Make addl_lib_search_paths a HashSet (Closes #7718).
auto merge of #10089 : pythonesque/rust/issue-7718, r=catamorphism

Seems pretty straightforward, but please let me know if I'm doing something wrong or the test needs to be rewritten.
auto merge of #10079 : alexcrichton/rust/no-reader-util, r=brson

These methods are all excellent candidates for default methods, so there's no need to require extra imports of various traits. Additionally, this was able to remove all the weird underscores after the method names. Yay!
Move rt::io traits into the prelude

These traits belong here, and were simply waiting for the std::io traits to get
removed. It's time they take their rightful positions!
Modify IoFactory's fs_mkdir, and add fs_rename

The invocation for making a directory should be able to specify a mode to make
the directory with (instead of defaulting to one particular mode). Additionally,
libuv and various OSes implement efficient versions of renaming files, so this
operation is exposed as an IoFactory call.
Remove all blocking std::os blocking functions

This commit moves all thread-blocking I/O functions from the std::os module.
Their replacements can be found in either std::rt::io::file or in a hidden
"old_os" module inside of native::file. I didn't want to outright delete these
functions because they have a lot of special casing learned over time for each
OS/platform, and I imagine that these will someday get integrated into a
blocking implementation of IoFactory. For now, they're moved to a private module
to prevent bitrot and still have tests to ensure that they work.

The api of the io::file modules has also been reworked in this commit. The
open_reader and open_writer functions have had open and create counterparts
created, neither of which take any arguments (allowing for easy usage). The
top-level 'file::open' function was renamed to 'file::open_stream', and
top-level 'file::create' and 'file::open' functions were added (same as the
methods).

I also removed the traits that add functionality to the platform's Path
structure. It was unfortunate having to import all of these traits, and it was
unclear whether they would ever be implemented for anything other than Path. For
this reason, they're now just an extra impl block on Path itself.

I've also expanded the extensions to a few more methods defined on Path, most of
which were previously defined in std::os but now have non-thread-blocking
implementations as part of using the current IoFactory.

Closes #10057