Dial back aggressive checks in Path (#16447)
* Dial back aggressive checks in Path
Aggressive checks are preventing crossplat and extended Windows solutions. This change:
- Doesn't throw on empty paths fro GetDirectoryName, GetPathRoot
- Doesn't consider colon when looking at path segments on Windows
- Moves non-shared code out of PathInternal
- Fix span GetDirectoryName to handle multiple separators
* Comment updates
* Check for valid drive letter with PathRoot
Remove other usages of PathSkip (related to #16311)