Add `collapse` option to ScheduleOccurrence.block

* Add optional third argument to `ScheduleOccurrence.block`. If true, collapse
  adjacent future instances of the same program into the first instance of the
  program.
* FIXME: This doesn't backfill instances that weren't specified in the time
  constraints of the block.
Take a brute force approach to collapsing full on-now schedule

Query eight hours on both sides of now. Reject all shows that already ended.
Use collapse flag in listen live's ScheduleOccurrence.block call