Introduced APIObject.

This allows for easier construction of objects from the API,
automatically populating attributes, lazily loading resource references,
and only requiring that documentation be added around new object.