Consolidating range traits
Supplemental fix for issue 9148 - lambdas will be aggressively inferred to pure
Supplemental fix for issue 13120 - remove accidentally accepted @nogc attribute

`removechars()` and `squeeze()` are not @nogc, because they uses `dup` and `std.utf.encode`.
Documentation corrected.
Merge pull request #2495 from yglukhov/doc-fix

Documentation corrected.
Fix Issue 11706 - Add a TypedefType trait to extract the underlying type
of a std.typecons.Typedef.
Fix issue 13425 - DList.linearRemove on last...

...element returns non-empty range.

The main issue is that DList.Range is implemented in terms of "first and last" as opposed to "first and past last", which means you have to special-case empty ranges. The fix is to do the same thing as in `opSlice`, and to explicitly initialize a null Range when it is empty.
Merge pull request #2493 from 9rnsr/fix13120

Supplemental fix for issue 9148 and 13120
Merge pull request #2497 from monarchdodra/DListRemove

Fix issue 13425 - DList.linearRemove on last...
Remove comma expression in std.uni
Merge pull request #2116 from AndrejMitrovic/Fix11706

Issue 11706 - Add a TypedefType trait to extract the underlying type of a std.typecons.Typedef
Fix Issue 4493 - Add sorting capability to toJSON and add another unittest.
Merge pull request #2120 from AndrejMitrovic/Fix4493

Issue 4493 - Add sorting capability to toJSON and add another unittest
std.process: @safe/nothrow cleanup
fix Issue 13441 - joiner asserts with only(x) separator
Merge pull request #2501 from CyberShadow/pull-20140909-112214

std.process: @safe/nothrow cleanup
fix Issue 13445 - std.process fails to create process with empty (non-null) working directory
fix Issue 13447 - Do not escape process parameters unless necessary
std.process: Fix using 0 as invalid FD value, use -1 instead
Merge pull request #2502 from CyberShadow/pull-20140909-140509

fix Issue 13445 - std.process fails to create process with empty (non-null) working directory