Fix issue 12007 - cartesianProduct does'nt work with ranges of immutables

The fix consists in making Repeat!T assignable, even if T itself is not.
Add support for non-assignable construction for tuple
Merge pull request #1933 from monarchdodra/tupleBuild

Add support for non-assignable construction for tuple
Remove useless lambda
Make imports scoped in functional
more std.functional import scoping
Merge pull request #1953 from monarchdodra/ArrayClean2

Remove useless lambda
Merge pull request #1956 from monarchdodra/functionalIncludes

Scope includes in std.functional
Fix Issue 11017 - Improve performance of toLower etc.

Changed to use `appender` instead of repeated `~=`.

https://d.puremagic.com/issues/show_bug.cgi?id=11017
Reserve appender length for the common case
std.regex - fix issue 12105

Handle the case where a lazy quantified loop will have
pessimistic empty "quick test", for example
in front of a lookaround.
Merge pull request #1957 from Poita/bug11017

Fix Issue 11017 - Improve performance of toLower etc.
Make std.stdio.testFilename @safe and pure
Merge pull request #1960 from tom-tan/safe-pure-stdio-testFilename

Mark `std.stdio.testFilename` as `@safe` and `pure`
Merge pull request #1959 from blackwhale/issue-12105

std.regex - fix issue 12105
fix issue 12076

Lookaround in ctRegex used wrong number of total captures thus missing
both a bit of optimization AND a special case of 0 matches.
The latter is the reason of range violation in issue 12076.
Mark std.stdio.File.this(this), isOpen, name and getFP as `@safe`
Merge pull request #1958 from blackwhale/issue-12076

fix issue 12076
Cleanup DList
Merge pull request #1954 from monarchdodra/DListCleanup

DList cleanup