Move isRelativeDrive tests to isRelative

Those tests were commented out, because isRelativeDrive is not normally
exported from the module. Instead of doing a special testing compilation by
passing the TESTING=1 environment variable, it seemed easier to rewrite the
tests to use isRelative.

Only the following trivial test is not accounted for:

    isRelativeDrive "" == True
Fix links and add more tests and comments

No tests are removed, only new ones added.

The semantics of `combine` is questionable. See also #8752. Not changing
anything for the moment.
Refactor: use hasTrailingPathSeparator

hasTrailingPathSeparator is defined as:

hasTrailingPathSeparator "" = False
hasTrailingPathSeparator x = isPathSeparator (last x)
Refactor: joinDrive=combineAlways

Those 2 functions were effectively doing the same thing!

All tests still pass.
Refactor: introduce function hasLeadingPathSeparator for clarity

Also fix the comment to reflect the code. This fixes #8752.
Cleanup: rename file to dir in takeDirectory
Bug fix: pathSeparator can be forward slash on Windows

dropTrailingPathSeparator "/" would return "\\" on Windows, since that is the
default:

    pathSeparator = if isWindows then '\\' else '/'

The function `normalise` can be used to normalise pathSeparators in filepaths,
the function `dropTrailingPathSeparator` shouldn't do it for you.

This change is needed for the next commit. The test now runs for both Posix as
Windows.
Refactor: simplify by calling dropTrailingPathSeparator

Four ways to do the same thing. All tests pass.
Refactor: propSep is not needed

Add a test to show that splitDirectories can handle superfluous
pathSeparators.
Refactor: break instead of span and 3x reverse

This works because pathSeparators can only occur at the end of splitPath
elements. h is passed a pathElement without separators.

Add a test to show that superfluous (and a weird combination of)
pathSeparators are still preserved. This function does not normalise
pathSeparators, otherwise it could be simplified further.
Bug fix: isDrive "" == False
Update changelog