imporvements to uninitializedFill && initializeAll

Because they didn't really handle all of the cases correctly.

Added unittests.
Issue 8367 - Insufficient constraints for chain

The error message from compiling the bug's sample code after this change is:

```
bug.d(11): Error: template std.range.chain does not match any function template declaration. Candidates are:
std/range.d(2018):        std.range.chain(Ranges...)(Ranges rs) if (Ranges.length > 0 && allSatisfy!(isInputRange, staticMap!(Unqual, Ranges)) && !is(CommonType!(staticMap!(ElementType, staticMap!(Unqual, Ranges))) == void))
bug.d(11): Error: template std.range.chain(Ranges...)(Ranges rs) if (Ranges.length > 0 && allSatisfy!(isInputRange, staticMap!(Unqual, Ranges)) && !is(CommonType!(staticMap!(ElementType, staticMap!(Unqual, Ranges))) == void)) cannot deduce template function from argument types !()(MapResult!(__lambda2, Foo[]),string)
```

Fixes Issue 8367
http://d.puremagic.com/issues/show_bug.cgi?id=8367
Fix 8368 - Insufficient constraints for sort

Error from bug code after this change:

```
Error: template std.algorithm.sort does not match any function template declaration. Candidates are:
std/algorithm.d(7820):        std.algorithm.sort(alias less = "a < b", SwapStrategy ss = SwapStrategy.unstable, Range)(Range r) if ((ss == SwapStrategy.unstable && (hasSwappableElements!(Range) || hasAssignableElements!(Range)) || ss != SwapStrategy.unstable && hasAssignableElements!(Range)) && isRandomAccessRange!(Range) && hasSlicing!(Range) && hasLength!(Range))
bug.d(6): Error: template std.algorithm.sort(alias less = "a < b", SwapStrategy ss = SwapStrategy.unstable, Range)(Range r) if ((ss == SwapStrategy.unstable && (hasSwappableElements!(Range) || hasAssignableElements!(Range)) || ss != SwapStrategy.unstable && hasAssignableElements!(Range)) && isRandomAccessRange!(Range) && hasSlicing!(Range) && hasLength!(Range)) cannot deduce template function from argument types !()(MapResult!(__lambda2, string[]))
```

Fixes Issue 8368
http://d.puremagic.com/issues/show_bug.cgi?id=8368
Update for documentation as a consequence for https://github.com/D-Programming-Language/phobos/pull/862
Merge pull request #1053 from NilsBossung/master

DDoc: add missing ')'
Fix mismatched parens in DDoc.
Merge pull request #1054 from CyberShadow/ddoc-syntax-fixes-3

Fix mismatched parens in DDoc.
Fix typos
Merge pull request #1055 from ntrel/various-typos

Fix some minor doc typos
Issue 6066 - std.container: BinaryHeap interface is broken.
Issue 5726 - boyerMooreFinder hangs when finding
Issue 5513 - Erroneous example in std.algorithm
Merge pull request #1057 from andralex/6066

Issue 6066 - std.container: BinaryHeap interface is broken.
Merge pull request #1059 from andralex/5513

Issue 5513 - Erroneous example in std.algorithm
Merge pull request #1058 from andralex/5726

Issue 5726 - boyerMooreFinder hangs when finding
Fixes Issue 5736 - Missing 'else' in 'static if'
Merge pull request #1061 from AndrejMitrovic/Fix5736

Issue 5736 - Missing 'else' in 'static if' in BaseClassesTuple
Merge pull request #1047 from Poita/bug8367

Issue 8367 - Insufficient constraints for chain
Remvoe tab introduced in pull #1043

Just remove the tab.
Merge pull request #1063 from denis-sh/patch-2

Remvoe tab introduced in pull #1043