Better support for setting custom ringer for event series
-added DataSetManager

EventDetailsFragment:
-fixed bug  where context could sometimes be null
-removed some duplicated code

MainActivity:
-broadcast receiver now only restarts the event silencer service if the service was not the one to send the message
-no longer handles finding best ringer for given event.  This is handled during the database update only

SimpleCalendarEvent
-added member to indicate whether the event has a custom ringer set (this was needed since the default value of UNDEFINED can also be considered custom)

Columns:
-added column for CUSTOM_RINGER

DatabaseInterface:
-setRingerType() now also sets CUSTOM_RINGER to true
-setRingerForAllInstancesOfEvent() now uses the faster update() to avoid looping through unrelated events
-getEvent() updated to read in custom ringer field
-getEvent() now applies custom ringer from calendar preferences and event series preferences (if they exist)
-simplified if/elses in insertEvent() to ternary operators

DataSetManager:
-added to reduce code duplication
-handles sending broadcast messages to indicate when the database has been updated

EventDatabaseOpenHelper:
-onUpgrade() will now drop any existing event table and recreate it.
-This should probably be changed later so that upgrades from the 2.0.x series can be migrated in without losing any custom data

Prefs:
-added stub method getRingerForCalendar(), only returns UNDEFINED ringer for now
-removed unused getDefaultRinger()

EventSilencerService:
-removed getBestRingerType(), best ringer is either the generic default, or the value stored in the event (custom calendar and event series ringers are applied during database update)
-removed duplicate code to send data set changed broadcast message