indexOf and lastIndexOf should not work properly with unicode for all
string types (unlike before). As part of that, I also ended up fixing a
bug in std.array.back for strings (wstrings in particular were broken).
I also improved various, related unit tests.
* Made emplace faster and replaced calls to it to also make them faster.
* Replaced phobos.d in posix.mak with index.d.
* Added version=StdDdoc to documentation build in posix.mak, and replaced uses of D_Ddoc with it.
* Improved documentation target in posix.mak (target dir automatically created).
* Added nice documentation table and cheat sheet at the top of std.algorithm.
* Replaced a few helper structs in std.range and std.algorithm with local structs, which simplify matters a fair amount.
* Added more constraints to functions in std.algorithm (still work in progress).
* Improved error message in std.algorithm.sort in case of failure to sort.
* std.random.dice(1, 10) now works (no need for array notation std.random.dice([1, 10])).
* Fixed documentation bugs and insufficiencies in std.range (still more to do).
* Improved speed of walkLength.
* Simplified retro.
* Simplified and optimized stride. Also folded stride(stride(r, a), b) into stride(r, a * b).
* Added roundRobin to std.range, which as a perk simplified radial.
* Added takeOne and takeNone to std.range.
* Added unsigned to std.traits.
In particular, functions which make changes in place have now been
renamed to have InPlace in their name as discussed on the newsgroup
(with versions with the old names scheduled for deprecation). I also
created versions for those functions which do _not_ do the changes in
place, but in at least a couple of cases, they had to be left commented
out until the old versions which do make the changes in place have
actually been removed. I'd love to just remove the old versions, but
that would silently break code, so tough luck for now.
Now, appending a range beats builtin append. I noticed that appending a range does not beat appending single elements when the size of the range is small (such as one element). There are probably heuristics we can find to optimize the copying, but I have a feeling these should just go into the builtin array copy code anyways.
Fixes bugzilla 5198
overlap: nested functions min() and max() are ad-hoc workaround to make the function pure nothrow.
front(), back(), popFront() and popBack() depend on std.utf, and they are unchanged for now.
It's not possible to index into void[] arrays, which means that they
cannot be ranges. Therefore, I've added template constraints to
front(), back(), popFront(), and popBack() in std.array that prevents
them from being instantiated with void[].