Allow for before and after callbacks on save() and delete()

This allows for 4 hooks to be used in models:

- beforeDelete()
- afterDelete()
- beforeSave()
- afterSave()