Mail: deprecated mail.fromaddress, reformatted mail.from to Title <emailaddress>

Closes #4018, #4082

* reformatted code to allow for traversal
* deeper config items should be denoted like this: `object.object.object.property`.
* added tests for testing the deprecation warnings

---

* cleaned up `mail_spec.js`
* deprecated `mail.fromaddress`
* implemented 'Blog title <email@address.com>' format with fallbacks
* added tests to deprecation and from address, made existing ones more robust
* moved domain intuit into its own module: `GhostMailer.getDomain()`

Left them as two separate commits on purpose.
A good unit test takes a single thing as its black box, and checks that the output is as expected for a given input, taking care to check for the exactly the things that are required without duplicating tests or covering things which are optional.

Therefore I think checking that there are the right number of arguments and that  the first argument contains the property in question should be enough and strictly speaking the colouring check and the concept that the exactly correct string appears on the other end ought to be done in the error handling tests.

The idea being that if I fix a typo or slightly change the wording, I shouldn't have to update a test, but that if I removed one of the messages or removed the reference to the deprecated value, then the test definitely needs to break and require fixing.

However, although `logError` is well covered in the error handling tests, `logWarn` is not, so in this case there is no duplication and I don't think it is a big enough issue to warrant not getting this into the release.

Still, just wanted to take this opportunity to weigh in and spout some of my unit-testing idealism :dancer: