Add email provider + incoming/outgoing tasks

* Add incoming task to regularly fetch incoming messages
* Add outgoing task to regularly push outgoing messages
* Add fetch() to DataProvider - implements fetching latest messages
  for each provider
* Add process_pending_messages() to DataProvider - processes pending
  messages and sends them
* Add PENDING_POLL status to differentiate a message waiting to be sent
  and message waiting to be picked when the provider polls us.
* Add Email data provider
Rename 'phone' provider config param to 'from'
Fix reference to Contact::PHONE and specify contact type per provider
Newlines after incoming/outgoing task logs
Better handling of "Mailbox is empty" error from imap_open
Add PENDING_POLL to allowed message statuses
Fix errors on outgoing message task

- Pass a default value for limit
- Catch ORM errors and log, don't halt the entire task for that
Better handling of DataProviders and different type

- Only create 1 DataProvider instance per provider (ie. singleton)
- Allow requesting a provider by type through DataProvider::factory()
- Set default DataProviders by type.
Fix incorrect config param name in email provider
Fix undefined sender name in Email provider
Set message title when sending messages