imporvements to uninitializedFill && initializeAll

Because they didn't really handle all of the cases correctly.

Added unittests.
Added std.range.only - range of a single element.

This adds range type `Only!T` and helper function `only!T(T)`. This is a range that iterates a single value, useful when some interface requires a range, but you only have a single value.
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
Use RangeError + length optimisation for Only!T
Using version(D_NoBoundsCheck) for Only!T
Update for documentation as a consequence for https://github.com/D-Programming-Language/phobos/pull/862
merge from staging
Merge branch 'master' of github.com:D-Programming-Language/phobos
New docs, examples, added asserts for Only!T
Voldemortification of std.range.only
Changed only.Result to static struct
Undoing formatting error
Merge pull request #1046 from Poita/only

Added std.range.only - range of a single element.
Remove stray // from ddoc.
Complete the fix for issue 8302.

The original fix (e6621da89985ca9688f758c5fffd00438050bfd4) missed the
second variant of std.file.dirEntries.
Merge pull request #1051 from quickfur/std_file_ddoc

Improve std.file.dirEntries ddoc
Fix for issue# 8890: commonPrefix does not handle unicode correctly.

It was returning partial code points if the first few code units in a
code point matched but not the entire code point.
Slight tweak to commonPrefix's template constraint.
Fix commonPrefix so that it can mix strings and other ranges.

The fix for 8890 made it so that commonPrefix could no longer compare
strings with ranges of other types. This fixes that.