Clean up message creation with author class

The relevant person can be found based on the account and email address
passed in. Once the person has been found, you can then easily compose a
message as part of a conversation.
Find person and compose message using helper class
Remove unnecessary valid check before save
Use shortcut method to find a single record
Cleanup whitespace
Add column to message to record time of response
Specify membership association through the user association
Provide a different email address for each user factory
Add role helper methods for memberships and people
Create a query object for finding oustanding messages
Move message composition into it's own object
Use the message composition object when creating messages
Merge pull request #79 from vanstee/conversation-response-time

Track conversation response time