[ADT] Refactor DenseMapInfo for integer types (NFC) (#155549)
This patch consolidates DenseMapInfo<T> for integer types T with a
common templated implementation. DenseMapInfo<char> is excluded
because it uses ~0 for the empty key despite char being a signed type.
Also, we preserve the tombstone key value for long, which is:
std::numeric_limits<long>::max() - 1