Fix `default`

Because it doesn't work.  :)

Also added a test, and fixed some trailing whitespace because `python-mode` does it automatically.

I'm not 100% confident that this is the right place for the `null` check, but it seems to make sense: deserializing checks for `null`s on the "outside" (in `_SchemaNode.deserialize`), so serializing should check on the "inside".  Maybe.