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.
Fix regression 13393.

Caused by .save failing to save entire state, causing inconsistency in
.save'd objects.
Simplify unittest.
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