calendar: More fixes with exceptions when not repeating
The fixes from !630 (merged) were not enough, exceptions set on days were calendar did not repeat were also confusing other exceptions after this.
Simplify implementation a lot, instead of keeping track of the next exception date, start by building a set of all exceptions dates and use membership of this set as a criterion to skip exceptions.