Fix issue 10165 (rework of PR #1302)

http://issues.dlang.org/show_bug.cgi?id=10165
Issue 10165: No syntax to create thread-local shared variables

Adds `UnqualRef` templated alias/struct that is similar to Rebindable but
strips away all qualifiers completely (including shared)
Fix issue #13354 - Use a generic Variant for passing opIndex/opIndexAssign arguments.

Also improves the error message when an incompatible index or value type is used by printing the actual type ID instead of "void[]" in the thrown exception.
Fix Issue 10460 - auto ref for Union, SetDifference, SetSymmetricDifference

https://issues.dlang.org/show_bug.cgi?id=10460

The rearrangement of SetSymmetricDifference.front was needed since auto ref doesn't deduce correctly when there are multiple return statements (by design), so a single return statement with the ternary operator was used.
Add @nogc to RebindableCommon methods
Reverse static condition in Rebindable/RefUnqual
Fix regression 13393.

Caused by .save failing to save entire state, causing inconsistency in
.save'd objects.
Simplify unittest.
Make std.file.timeLastModified with two arguments safe
Merge pull request #2461 from fb-pja/bug10460

Fix Issue 10460 - auto ref Union, SetDifference, SetSymmetricDifference
Merge pull request #2473 from quickfur/issue13393

Fix regression 13393: cartesianProduct + joiner = runtime assertion failure
Merge pull request #2474 from tom-tan/safe-file-timeLastModified-2

Make std.file.timeLastModified with two arguments safe
Use reinterpret cast is [does|may]PointTo

Instead of a straight up cast. Avoids problems related to opCast
or alias this, such as those in:
http://forum.dlang.org/thread/vldwvnuivsfwjozqiuup@forum.dlang.org
Eliminate C-style array declarations.
Use auto instead of explicit array type.
Merge pull request #2475 from quickfur/issue13402

Eliminate C-style array declarations.
Fix Issue 13391 - Allow division of BigInt by long/ulong
Fix some property enforcements.
Merge pull request #2479 from denis-sh/fix-some-property-enforcements

Fix some property enforcements.
Change unittest from writing output to concatening to an array and checking the content
Merge pull request #2480 from MetaLang/tee-unittest-fix

Change unittest from writing output to concatening to an array and checking content