Fix Issue 10460 - auto ref 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.
> The 'value' returned might be a reference type, so all the same pitfalls exist. You could also just modify the underlying range manually if you wanted.

Right, but in that case, you *know* you are doing something "underhanded". Here, you are assigning to a range which verifies the `hasAssignableElements` traits, which *should* be a legit operation.

But yeah, I can figure a "compromise to practicality" as a valid argument, such as operations that don't change the  "verifies predicate" state.

Kind of wish we could have an assert for that, but, well, nothing's perfect.