Use Account instead of URI to create transports

There's no need to create a URI just to rip in appart again. Additionally, to
support additional changes (i.e. to use Mailbox instead of Folder in the
MessageController), we need to store the actual Account.

NOTE -- This change only affects IMAP and POP3. SMTP will come in a follow-on CL

Change-Id: I400036a17271c99272fd9c603547dcd713b50b9d
diff --git a/proguard.flags b/proguard.flags
index d1ebcb8..7ed8d21 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -13,10 +13,15 @@
   public *** newInstance(android.content.Context, java.lang.String);
 }
 
+# TODO remove after converting Sender#instantiateSender() to use Account instead of URI
 -keepclasseswithmembers class * {
   public *** newInstance(java.lang.String, android.content.Context, com.android.email.mail.Store$PersistentDataCallbacks);
 }
 
+-keepclasseswithmembers class * {
+  public *** newInstance(com.android.emailcommon.provider.EmailContent$Account, android.content.Context, com.android.email.mail.Store$PersistentDataCallbacks);
+}
+
 -keepclasseswithmembers class android.content.SharedPreferences$Editor {
   *** apply();
 }
@@ -144,7 +149,7 @@
   *** setTransport(com.android.email.mail.Transport);
 }
 
--keepclasseswithmembers class com.android.email.mail.store.ImapStore$ImapFolder {
+-keepclasseswithmembers class com.android.email.mail.store.ImapFolder {
   *** getMessages(int, int, com.android.emailcommon.mail.Folder$MessageRetrievalListener);
   *** getMessages(com.android.emailcommon.mail.Folder$MessageRetrievalListener);
   *** getMessages(java.lang.String[], com.android.emailcommon.mail.Folder$MessageRetrievalListener);