Clarify documentation. Add `isRvalueAssignable` and `isLvalueAssignable`.

Previously `isAssignable` worked like `isLvalueAssignable`.

Also add some unittests.