The function that was called `test_flatten_ignores_serializables_by_default` has
been updated into `test_flatten_serializables_on_by_default`.  This is part of a
push towards having the treatment of serializables be handled entirely through
the `Role` system.

Subsequent commits put add the code that makes this test pass.

The serializable decorator for `xp_level` hasbeen modified to say that the function
represents a ModelType(ExperienceLevel).

This is my first interaction with the new syntax and, while I like it, I feel it
is a little unwieldy.

For example, the code in the test specifically looks like this:

    @serializable(type=ModelType(ExperienceLevel))
    def xp_level(self):
        return ExperienceLevel(dict(level=self.total_points * 2, title="Best"))

I think I would prefer something like this.

    @serializable(ModelType(ExperienceLevel))
    def xp_level(self):
        model_data = {
            'level': self.total_points * 2,
            'title': "Best",
        }
        return model_data

The type represented by the serialization could then expressed once and the
wrapped function itself only has to return the arguments used for instantiation.

Anyway, thinking out loud in addition to explaining a change to the tests.
There are two things going in this changeset together.  My mind wandered a
a little.

First, a function called `allow_none` has been defined to consolidate where
this logic lives in a single function.  The function takes two arguments, a
class and a field.  It sets it's default value to the value found on the class
but checks the field to see if an override was specified.

Second, the `include_serializables` flag has been removed.  This simplifies
the interface to `to_primitive` and centralizes the method used for serializing
a field, or not serializing a field, in the `Role` system which makes it easier
to reason about.