Refactors UserEmailObserver to improve Code Climate score

- Extracts certain logic to private methods and remove unnecessary
comments
- Extracts email enqueueing methods into a separate class
- Fix specs involving UserEmailObserver to call #after_commit instead
of the specific methods
Merge pull request #1332 from locks/user_email_observer

User email observer (Code Climate improvements)