I actually swapped *all* instances of the semantic `isAssignble && !isElaborateAssign`, due to the issue 11853:
https://d.puremagic.com/issues/show_bug.cgi?id=11853

The "problem" is that `isAssignable` needs to "try" to instantiate `opAssign`, which may get you into trouble if said `opAssign` itself tries to call an emplace (think a linked list, where a node constructor will emplace a new node elsewhere => circular template instantiation dependency).

This whole problem can be short-circuited by simply *first* checking `!hasElaborateAssign`, which only needs to now if `hasMember!"opAssign"`. If the type *does* have an elaborate assign, then there simply is no need to try to see if it is assignable at all.

Worst case scenario, even if said code doesn't encounter the bug, checking it in this order is lighter on the compiler (no need to instantiate the opAssign when elaborate).

--------

But the change is completely independent of emplace, and I could have split it off into another pull. It was just opportunistic cleanup.