Handle not having a completion date

Deleted tasks don't have a completion date. Don't assume they do only to
raise a KeyError when it can't be found.
Add support for due dates on new tasks

Allow creating new Todo tasks, and updating existing ones, with a due
date.  This should be a datetime.datetime or datetime.date object (or
something similar that has an `strftime` method).
Create recurring tasks with deletion recurrence

When creating a new recurring task, require a date range to be specified
within which the new task will be created if the old one is deleted.
Use completion range for deletion range

When upgrading task data for a recurring task from before recurring
tasks supported deletion, assume the range of dates to create the new
version of the deleted task should be the same as those for if the task
were completed.