TODO 4: Set each field in setRow.
TODO 16: Remove the result object from model.
Add method Model::getDatabase().
Accept Result or Database object in Model constructor.
Fallback to default connection if none given.
TODO 17: Remove the result object from collection.
Store previous value in Model::$arrModified.
TODO 14: Track primary key modifications.
TODO 5+6: Always update registered and insert unregistered models.
TODO 12: Add method Model::free().
Clean modifications when clone a model.
TODO 13: Add method Model::refresh().
Track primary key changes in Model::delete().
Use IteratorAggregate instead of Iterator for Collection.
TODO 7: Model::find* optimisation to use the registry.
TODO 18: Correctly store prefetched related models in registry.