Changing ByCodepoint's "save" signature

1) Because if it returns a ref, then it isn't actually saving anything...
2) Changed the "const" qualifier to inout: Using "const" means the return type is always "const ByCodepoint", which isn't a valid range (a const range can't be popped)

The change is mostly moot, since it would appear ByCodepoint's save or forwardness is never used anyways. But that doesn't mean it shouldn't be correct.
imporvements to uninitializedFill && initializeAll

Because they didn't really handle all of the cases correctly.

Added unittests.
Refactored endsWith to use retro + startsWith.

What's the point of having all these powerful, generic, abstract functions if we're just going to copy and paste code? :-)

This change has several benefits:

* It is far more elegant.
* Changes (optimisations) to startsWith automatically carry across to endsWith.
* We get extra testing for startsWith and retro for free.
Rewrite joiner to not assume persistence of .front.
Add unittest for new joiner.
Completely get rid of UTF-8 to workaround OSX/64 bug.
Replace joiner unittest with one that doesn't suffer from issue 9131.
Merge pull request #987 from quickfur/new_joiner

Fix issue 8085
Removing trailing spaces
fix Issue 8908 - Collapse of std.csv by the specifications change of std.conv.parse
fix Issue 9060 - std.range.chain and std.range.zip cannot get frame pointer

Changes to avoid following two errors:
* "cannot access frame pointer"
* "field xxx must be initialized in constructor, because it is nested struct"
Merge pull request #1015 from monarchdodra/spaces

Removing trailing spaces in algorithm
Doc fix: an O(1) op was documented as O(log(n))

I thought it was odd that inserting an element at the front of a singly-linked-list would be an O(log(n)) operation.  Too expensive!  So I looked at the code and it does seem to be O(1).  I'm hoping this is just needing a documentation edit ;)
Merge pull request #1004 from 9rnsr/fix9060

Issue 9060 - std.range.chain and std.range.zip cannot get frame pointer
Merge pull request #1016 from chadjoan/patch-3

Doc fix: an O(1) op was documented as O(log(n))
Merge pull request #854 from jmdavis/hasSlicing

Improvements to hasSlicing
Gives sequence slice to end
Merge pull request #1001 from 9rnsr/fix8908

Issue 8908 - Collapse of std.csv by the specifications change of std.conv.parse
Some updates to the changelog.
Fixed typos in changelog.