Ensure serializer bases are sane.
Switch from if..AssertionError to just assert.

This is a mite simpler and possibly more obvious and allows the assert
statements to be optimised out with -O, if really desired.
Register document collections.
Move polymorphic deserialisation type logic.

I don’t like it being on the model (it should be on the serializer), but
Django REST framework is fighting against me on the matter, and so for
now this at least gets it in the same place as the serialisation logic
for that type field.
Add some documentation.