Remove EmailClient.
Add self-referencing generic argument to EmailTemplate.
Remove code duplication in tests.
Introduce base test class.
Add PartialTemplateMetadata.
Add base logic to MailMessageFactory.