moved SMTP changes into new PR

split #147 into a simpler PR against SMTP.pm

* Progress on Issue #70 
* adds caching of the AUTH methods. Cache the list and avoid having to generate it on every connection.
* reduces several instances of duplicated code into new functions
* adds tests