replace AttrDict with DataObject

Reviewer: @Sovietaced
CC @3mp4y5

DataObject uses the built-in __dict__ and attribute access rather than
wrapping a separate dict.
This isn't a great name for something that returns a dict :)