ManagedObjectContext tracks all ManagedObject

Model objects should inherit from ManagedObject and are tracked by
ManagedObjectContext. This provides a common context for all model
objects and decouples from the underlying datastore.