Use sorted set to track offenses. Only process WAF offenses once.

Offenses were being tracked in an inefficient way that created
additional keys and too much noise. This changes the behavior to use a
sorted set which is a breaking change. It will break the backend as
well as the visualizer.

Additionally, this fixes a bug where the WAF events were being
processed multiple times, causing more hits to Redis as well as
unnecessary cycles.