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: introduce function hasLeadingPathSeparator for clarity

Also fix the comment to reflect the code. This fixes #8752.
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.

The test now runs for both Posix as Windows.
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.
Make splitFileName quickcheck test Posix only

See Github #14.
Merge pull request #1 from thomie/cleanup

Cleanup