calendar: More fixes with exceptions when not repeating

The fixes from !630
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.

/reviewed-on !1030
2 jobs for for_testrunner_1
Status Job ID Name Coverage
  External
failed ERP5.UnitTest-Master

passed SlapOS.Eggs.UnitTest-Master.Python2