Create a grid-like object representing a sequence of times (rows) and
columns where cells are either empty or reference a wrapper object for
event occasions that overlap a specific time slot.

Currently, there is an assumption that if an occurrence has a start_time
that falls with the temporal scope of the grid, then that start_time will
also match an interval in the sequence of the computed row entries.

dt

a datetime.datetime instance or None to default to now

items

a queryset or sequence of Occurrence instances. If None,
default to the daily occurrences for dt

if not None, a callable returning a dictionary keyed by desired
EventType abbreviations with values that iterate over progressive
CSS class names for the particular abbreviation; defaults to
css_class_cycler()

proxy_class

a wrapper class for accessing an Occurrence object, which
should also expose event_type and event_class attrs, and handle
the custom output via its __unicode__ method; defaults to
DefaultOccurrenceProxy