use mailgun first (just swapped order from last commit on this file)
moved mandrill and mailgun specific timeout checks (response codes that are unique to each service) into their implementation classes, and added a new abstract method into the Email class to update the interface.
added a todo for email_factory