std.path: extend functions to accept RandomAccessRanges

Many functions in std.path can be extended to accept RandomAccessRanges in addition to strings.

Attributes can be inferred, rather than explicit, because the functions are templates.

Bugzilla 5700 has been fixed.