This review is extracted from D96035.
It adds a data pool that could be filled asynchronously.
A use case for that kind of pool is keeping strings
(with possible additional data) and comparing them by
pointers comparisons. f.e. it might be used instead of
NonRelocatableStringpool which cannot be used in parallel.
The implementation of the hashmap is copied(with modifications)
from lld/COFF/DebugTypes.cpp.