Should we just make the default `False`, so it's clear when you introspect the object what's happening?

In theory, doing it this way means subclasses can override `allow_none` with a class-level variable without passing it to `super().__init__()`, but in practice we explcitly pass it through `__init__` in all the cases below where we make the default True.