Correction of setIntersection's description in the cheat sheet.

setIntersection's description was the same as setDifference's, which 
seemed like an error, I think I fixed it.
Extra doc and tests for hasElaborateAssign
Fixes Issue 8143 - Safe std.conv.to enum conversion
make nullable throw logic errors
Preliminary implementation of cartesianProduct.

For the case of two infinite ranges, use Andrei's schedule of traversing
right and bottom edges of an increasing square area over the infinite
table of combinations. This allows us to only need to traverse each
range in one direction, so only forward ranges are needed.
Add cartesianProduct to cheatsheet.
Replace unittests to avoid issue 8542.
Improve unittests.

Make unittests independent of exact order of pairs produced by
cartesianProduct.

Add unittest for cartesian product of two finite ranges.
Delete unrelated line.
Fix -property errors.
Merge pull request #856 from quickfur/cartprod

Implement std.algorithm.cartesianProduct
Update docs.
Merge pull request #1111 from quickfur/cartprod_doc

Update cartesianProduct docs.
Update std/traits.d
Consolidating forward range requirements

Because returning anything other than an *exact* type match messes everything up. This is particularly true in the sense that "saved" ranges are usually passed directly to a function, so not cast back to the original.
Fixes Issue 8837 - BigInt needs better operator constraints.
Make std.variant.maxSize public.

It's kind of hard to use VariantN without it.
Merge pull request #1112 from AndrejMitrovic/Fix8837

Issue 8837 - BigInt needs better operator constraints.
Merge pull request #1008 from monarchdodra/save

Consolidating forward range requirements
Merge pull request #1113 from jmdavis/maxSize

Make std.variant.maxSize public.