Implemented 'Undefined' object

A singleton object named Undefined will now be used as a placeholder to
represent unspecified values on model instances. This finally allows us
to distinguish between omitted fields and explicit nulls in incoming
data; previously both would appear as None after import conversion.