Accumulator refactor:

Stores a single copy of each request from different sources.
Firewalls identical requests.
Implements time based eviction policy.
Tests.
Can we make this sleep use `detail::Parameters::default_lifetime` so it's obvious it's not a hack/workaround to get round a test failure due to timing issues please?  (I guess that *is* why it's one second?)