This review is extracted from D96035.
It adds a hash table that could be filled asynchronously.
A possible use case for that kind of hashtable 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.