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
Refactor: use hasTrailingPathSeparator in joinDrive and combineAlways
Insert slash when first argument to joinDrive does not end with one

Before:
joinDrive "/foo" "bar" == "/foobar"

After:
joinDrive "/foo" "bar" == "/foo/bar"

The first argument to `joinDrive` should arguably always be a drive. On Posix
this means it should be, and thus end with, a single slash. It is currently
undocumented what should happen when it doesn't end with a slash (throw an
exception?). Since it is unlikely anyone is relying on the original behavior,
this change is hopefully ok to make.

The reason for this change is to make `joinDrive` similar in semantics to
`combineAlways`.
Inline call to joinDrive in combineAlways

The first 3 guards of both functions are the same, so copy-paste only the last
guard of joinDrive into combineAlways.
Remove unnecessary isDrive check in combineAlways

`isWindows && isLetter a1` implies `isDrive [a1, ':']`
joinDrive=combineAlways