Implement notification repeat feature.

As discussed and agreed on in #393.
Fixes #393. Fixes #1131.
This is a lot of code for a preference.  Maybe just start with a list?