The rate limit logic has been updated to account for streams going down temporarily and factor in when the stream title changes. I think I've accounted for most of the ways these events can happen, but there's probably still a few race conditions left over. It runs well enough in the development environment, it's time to collect some data in production.
There's also a small amount of preliminary work included in this commit for a new type of notification when streams change their title in the middle of a session.
This commit resolves two separate but related issues:
* Fixes the inability to unsubscribe from domains which are offline or no longer hosting an Owncast stream.
* Optimizes the subscription process to eliminate redundant HTTP requests. A domain is now validated only once during its first subscription, rather than every subscription attempt.