implement custom notification intents

I took the opportunity to refactor the settings into a separate class.

refs #2424