Communications update

Updated communications with customizable options to reference matters and to create contacts.
Lets start to make this code more modular. Finding a user seems to be a common theme, instead of repeating ourselves each time, lets instead create a function that takes an email address and returns a user or some sort (or nil if nothing found).

We can further create functions for other look ups.