Restrict the absolute path regex to the start of the string
Previously the regex used to detect Windows absolute paths only
applied the caret to the first part of the regex (the part that
matched drive letters). But the parts used to detect UNC paths
(\\server\name) and prefixed paths (\\?\C:\foo) were matching any part
of the string. And since / and \ are valid path separators on Windows,
URIs like puppet://foo/bar (used as file sources) were incorrectly
thought to be absolute paths.
This commit ensures the absolute path regex is restricted to the start
of the string for all cases.