ImapFolderAgent: Only keep a single UID value for each folder in memory.

Previously it used to keep a list of the UIDs of unread mails.  Now we
start to assume that UIDs in a folder identified by a UID VALIDITY value
are strictly ascending (monotonically increasing) as suggested by RFC
3501 and 4549 and just keep the highest UID seen in the last run.

This enhancement will help reduce the size of memory typically where
mails are left unread forever.
ImapFolderAgent: Unstringify integer keys of a hash saved in JSON.
ImapFolderAgent now recognizes "true"/"false" as boolean option values.

Add a utility method Agent#boolify to make it easier to handle boolean
option values.
ImapFolderAgent: Do not fail when port is blank.
ImapFolderAgent: "conditions" must not actually be nil.
ImapFolderAgent: Enable notification of mails already marked as read.

Add a condition key "is_unread" to allow user to select mails based on
the read status.
ImapFolderAgent: Emit a log message when creating an event or skipping it.
Merge pull request #398 from knu/imap_use_uid

Use "last seen UID" in ImapFolderAgent
inline models into migration
Merge pull request #402 from albertsun/safer-liquid-migration

Inline models into migration