More isAssignable/hasElaborateAssign coverage/doc

Unittest and Doc change only.

Because hasElaborateAssign is an odd beast.

Having maximum coverage in unittests helps detect breaking changes, as well as internally documents the workings of the function. It helps looking at the unit-tests to know how it works, without making the documentation overkill.