WIP#284: Potential bug: after_save pitfall

- Changed after_create & after_save to use after_commit. This is because in theory the data has not been persisted in an after_save or after_create.
- Removed puts statements I had from testing. Added in a test support file that makes sure that after_commit hooks are triggered in tests. Without it the tests that test that emails have been sent fail.
- Not 100% how this code worked before. But it did not look correct. Changed it to use after_commit on create instead of after_create on create.