This adds an SMTP library into Geary that can perform basic client submission of emails.
The interface is exposed generically through the Geary.EngineAccount interface.
This commit introduces a Scheduler module which deals with the problem of scheduling on the
idle or timeout queue unowned SourceFuncs (because the idle and timeout functions require
owned delegates). It also takes care of a handful of places where an out parameter was not
being set before the method returned, which Vala's new code analysis now picks up.
Needed to rethink storage strategies as I researched this and realized that a true scarce database -- where the database is sparsely populated both in columns and rows -- is not feasible due to IMAP's UID rules. The strategy now means that the database rows are contiguous from the highest (newest) message to the oldest *requested by the user*. This is a better situation than having to download the UID for the entire folder.