Bug 1088381- [Calendar] simplify time controller logic

### overview

simplified the `timeController` logic by moving all the busytime/event cache into the `dayObserver` while also reducing the amount of DB queries, improving the startup performance by ~250ms (compared to old month view + timeController) and also improved the performance while switching between months.

the main difference of the `dayObserver` from the old `timeController` is that we always listen to busytimes/event changes for a single day and don't need to worry about different *scales*. (which is way simpler to render)

the new cache logic is still more complex than I wanted it to be (specially because of the link between `event <==> busytime`) but it removed the need of the `IntervalTree`, reduced the amount of LOC drastically (633 additions and 1,970 deletions) and improved the app performance; so I think it was a good improvement.