Daily Email Subject Error Fixes

Previously, there were a few errors with the daily email subjects:

* there were no spaces between different time parts (diff) in the email subject
* time calculation seems off

This pull request:
 
* refactors subject compilation out into a separate class
* adds some basic tests for subject compilation
* uses new subject compilation in the UserMailer instead