optimize receipt_for user to not requery the database
update specs for new method signature on receipt_for
wrap receipt creation in a transaction for faster bulk sending
provide option to opt out of sending email with message
introduce callback hooks for MessageCenter::Service functions
callback hooks allow alternate and multiple ways to handle events.
for example, mail dispatching can be done using job queue libraries without introducing runtime dependencies into the gem.
separate sender and recipient receipt creation
combine internal logic of send_message and reply
this also prepares the way for allowing notify and send_message to return validation errors
only validate related objects on create
it would be extremely unlikely someone would accidentally remove the related object.
validating only on :create improves the performance of updates.
Making starred a column on receipt and removing the hstore, which means postgres is no longer a runtime dependency.