INT-3572: Improve Accept Once Filter Performance

JIRA: https://jira.spring.io/browse/INT-3572

Previously, a blocking queue was used to hold seen files; this was used to enable
FIFO when a max capacity is set.

When used with no capacity, a queue is not needed; also the `contains` operation
on a queue requires a linear search which does not scale well for a large number
of files.

Use a `HashSet` instead to significantly improve the `contains` performance.

Only maintain a queue if a max capacity is set.


__cherry-pick to 4.0.x__

Well, that won't really help, because the `contains()` and `add` need to be atomic.

There's no `ConcurrentSet`; we could use a `ConcurrentHashMap` and use `putIfAbsent`.

However, the `rollback` we added complicates the matter. Even though we know that the `rollback()` and `accept()` won't be called concurrently by framework code, there's nothing to stop a user calling them concurrently.