Accumulator refactor:

Stores a single copy of each request from different sources.
Firewalls identical requests.
Implements time based eviction policy.
Tests.
We could just do

    return std::any_of(std::begin(sources_), std::end(sources_), [&](const routing::GroupSource& to_check) {
      return to_check == source;
    });

since we don't need the found iterator, but it's probably six-and-half-a-dozen.