Refactoring save to extract the insertion process into another function,
this will help when adding the updating part
Adding Table::exists to quickly check if a record exists based on
a list of conditions
Initial steps to make save() handle updates too
Implementing automatic updating for Table::save()
Taking in considerations the persisted status of the entity for deciding
whether to insert or update
No updating the primary key on save
Documenting the save process, and changing where the isNew() information
is set to live up to what was documented
A bit of defensive coding in the update part of Table::save