Refactor database-synced tasks to not delete/recreate tasks each sync

 * change the way database-synced tasks work so we no longer delete and
   recreate them on every database sync, but instead, we add only new
   events, edit any that have changed, and remove events for database
   tasks that have been deleted

 * part of the above change involved creating a
   DatabaseEventSyncPerformer to handle the details of performing the
   actual sync of events from the database.

 * bugfix: db sync doesn't work correctly when sync frequence <
   task frequency. The above change was key to fixing this.

 * updated tests which relied on previous assumption/implementation
   that database tasks were synced on the minute boundary (i.e. MM:00
   seconds). Now that's no longer the case, so switched tests that
   started ticking at @next_minute, to start @now.

 * Update README section "Use with database tasks" to remove bit
   about running database sync on minute boundaries, and not running
   database events in same cycle as sync since these are no longer
   the case
Merge pull request #93 from robisenberg/fix_database_tasks

Refactor database-synced tasks to not delete/recreate tasks each sync