Refactored make_absolute into functionality on the Path
Improved windows path handling support
Added is_restricted() to path
auto merge of #5023 : mitsuhiko/rust/make-absolute-refactor, r=catamorphism

This pull request moves the logic from os::make_absolute() into the path module and fixes path joining for Windows.  It does this by adding an ``unsafe_join()`` function that implements the operating system's path joining semantics.

Additionally it also adds an ``is_restricted()`` method to the trait which will return true if the path points to a windows device file.