Accumulator refactor:

Stores a single copy of each request from different sources.
Firewalls identical requests.
Implements time based eviction policy.
Tests.
Yeah, there's been a tendency to use std::begin/end but it's an extra function call so if there's no preference I'll change it to the member version, although it doesn't look quite as neat.