Allow reports to be rerun

A few changes had to be made to make it possible to rerun reports.  This
patch does not add the ability to schedule recurring reports, it just
makes it possible to create a RunReport object using only the data
stored by the PersistentReport instance created during the initial run.
The RunReport object can then be run on the Celery queue and it yields
results based on the latest data.  The report results are automatically
available in the UI, but future commits that implement the recurring
logic may choose to change the display to call out that this is a
scheduled report result.

Change-Id: I163d73bc0bd54276a4d12d915a63382bc592f848
Card: analytics 1378
Add utility functions for scheduling

Adds two utility functions that are useful for scheduled task
implementation.
* diff_datewise finds differences between lists of dates,
and supports parsing those lists from lists of strings.
* timestamps_to_now gives you an efficient datastructure that enumerates
dates from some start to now, at some interval.

Change-Id: I1b9e2603938fcb18d9f396a8bb2fef0741d6ac9d
Card: analytics 1378