New message rendering methods on IMAP

I'm creating a pull request so it's easier to discuss and track changes as opposed to in the issues themselves.

As discussed in #112 and #111, this is a first pass at defining the interface. Currently only includes IMAP. RFC 822 to come.

I need to look further into the implementation and how the existing `IMAPMessage::htmlRendering` and `HTMLRenderer::htmlForIMAPMessage` methods work. It's unclear to me at this point if these new methods need to take additional parameters for the callbacks or if callbacks will be created within their implementation.