Rewrite custom event collection updater, again...

Go back to using NSArray's, since Swift arrays
aren't passed by reference, which is against this
code's assumptions. I'm sure there are other
places that also rely on this assumption...

Another problem with the lazy accessor is it only
gets evaluated once, even if it becomes nil.
Simplify the invalidation logic and just use a
more clearly named update method for everything.

Also restructure the variable assignment to be
clearer.
Add more fixes for run-time issues...

Add more nil-check fixes.

Add index-bounds-check fixes.
Fixup port of MonthsViewController...

Move cell background color setting.

Fixup porting cellSize calculation.

Guard borderInsets calculation values.

Fixup porting cell borderInsets setting.
Fixup port of DayViewCell, missing tintColorDidChange.