Make authentication mechanisms configurable

Not all mechanisms support separate authorization like CRAM-MD5. If remote_identity is given and the server supports CRAM-MD5, then offlineimap will connect without requesting the authorization id. 

The first commit is the patch for adding PLAIN support from Eygene, the second commit is the implementation.