std.array.join refactor.

tl;dr: std.array.join was quite complicated: 6 implementation functions, and a few hundred lines of code. Now it is just 2 functions, ~120 lines of code smaller, and within 10% performance of original (faster in some cases).

The original had 6 implementations: 3 joins with a separator, 3 without. For each, those 3 consisted of:
* A general slow version (uses `std.algorithm.joiner` with `appender`).
* A version for a range of arrays where you know the length (pre-allocates the destination array then uses array ops).
* A version for a range of arrays where you don't know the length (uses `appender`).

There's no need for the second version because you can just use appender and `.reserve` the size upfront. Appender already uses array ops when available in its `put` function.

There's also no need for the first function because using `joiner` is slower than just looping through the sub-ranges, appending them. The third function doesn't even use the fact that its operating on a range of arrays, so it can easily be merged with the first and second.

The end result is just one function for join with a separator, and one for a join without. They both use `appender`, and have a static branch that will `.reserve` the required size when the information is available.
Fixes Issue 8302 - Document that std.file.dirEntries throws FileException on invalid dir.
Merge pull request #1037 from AndrejMitrovic/Fix8302

Issue 8302 - Document that std.file.dirEntries throws FileException on invalid dir
Fix for mismatched string types + added unittests.
Fix for issue# 9214.

I don't think that it makes any sense for core.time.TickDuration.to to
be a property, since it's a conversion function, not an abstraction for
a variable. However, it _does_ make sense for the example to use one of
TickDuration's property functions instead (it makes the code cleaner
too). So, I've done that. And if the property debate results in
non-property functions being allowed to be called without parens (as
currently seems likely), then anyone wanting to use the to function
without the extra parens can do so then.
Decommented unittest that was blocked by bug 6354, which has since been fixed.
Merge pull request #1038 from jmdavis/9214

Fix for issue# 9214.
Convert sep to array for performance/generality.
Fix for non-array separators for non-string RoR.
fix issue 9211

A leftover from semantically incorrect optimization in std.regex
Merge pull request #1039 from mnembrini/decommentbug

Decommented unittest that was blocked by bug 6354, which has since been ...
[style] various fixes found during review
More improvements and optimisations to array.join
[style] reindent
Merge pull request #1040 from blackwhale/regex-bug9211

Regex bugfix (issue 9211). I assume FreeBSD's failure is unrelated.
Fix previous bug in countUntil

as pointed out by denish-sh. Also, more unittests.
typo
Merge pull request #1042 from monarchdodra/countUntil2

Fix previous bug in countUntil
Set CA certificates of HTTP
indent