De-duplicate toast messages
Split out of #446.
Problem/Opportunity Statement
If multiple of the same error happen in a short period of time, a toast message is created for each one. It's annoying to have to click (to close) many toast messages that are all the same. Sometimes you can't physically keep up with them, which makes the app hard to use.
What would success / a fix look like?
Perhaps: when handling a new error message, look through the message log. If we already have a recent (say <15 minutes ago?) message with the same contents, log the new message but do not fire a toast for it.