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