imporvements to uninitializedFill && initializeAll

Because they didn't really handle all of the cases correctly.

Added unittests.
Simplified std.algorithm.copy array overlap test.

The array overlap test in std.algorithm.copy did an unnecessary amount of comparisons. This pull request simplifies it.
Simplified std.array.join with separator.

Previously, std.array.join with a separator would check whether it needed to add the separator on each iteration of the loop. With this change, the check is unnecessary because the first element is appended before the loop, then the loop just adds the separator and next element each iteration.

This improves the code significantly in the case of a non-forward RoR because we don't need to know the length anymore. It's simpler, and will be slightly faster.
Fixes Issue 1397 - Add default argument to buffer size param in ctor.
Fix Windows makefiles' install target
Merge pull request #1034 from CyberShadow/win-makefile-install-target-20121226

Fix Windows makefiles' install target
Merge pull request #1031 from Poita/better-overlap-test

Simplified std.algorithm.copy array overlap test.
Merge pull request #1032 from Poita/array-join-improvements

Simplified std.array.join with separator.
Merge pull request #1033 from AndrejMitrovic/Fix1397

[trivial] Issue 1397 - Add default argument to buffer size param in ctor
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 ...