HistogramReservoir values should reset periodically (Timer metrics)

Description

Currently the timer metrics served from the internal `HdrReservoir` never reset so when looking at a 99th percentile latency metric we are looking at the 99th percentile of all values recorded since the session was initialized.

This is typically not the behavior expected by users. Instead, users expect that these percentiles only consider the latest X seconds/minutes. We should get rid of `_runningTotals` which is a histogram that contains all values and just return the `intervalHistogram` returned by the `Recorder`.

We should also consider implementing a snapshot caching mechanism similar to the one used by the `HdrReservoir` of the java driver which allows the "sliding window" of the timer metrics to be adjusted independently of the reporting interval used. See https://github.com/datastax/java-driver/blob/9f0d89799a8a1e4cd1022dd7c43333924c36a648/core/src/main/java/com/datastax/oss/driver/internal/core/metrics/HdrReservoir.java#L129-L135

With the caching mechanism we should also add a setting to allow users to specify how long each snapshot should be cached. See https://github.com/datastax/java-driver/blob/2863100b736f01b77f7347d17536da6f151b4583/core/src/main/resources/reference.conf#L1202-L1218

Environment

None

Pull Requests

None

Assignee

Unassigned

Reporter

Joao Reis

Labels

None

PM Priority

None

Fix versions

None

External issue ID

None

Doc Impact

None

Reviewer

None

Pull Request

None

Epic Link

None

Sprint

Size

None

Priority

Major
Configure