Refactor the PDB HashTable class.

It previously only worked when the key and value types were
both 4 byte integers.  We now have a use case for a non trivial
value type, so we need to extend it to support arbitrary value
types, which means templatizing it.

llvm-svn: 327647
diff --git a/llvm/tools/llvm-pdbutil/Analyze.cpp b/llvm/tools/llvm-pdbutil/Analyze.cpp
index 6c603dd..974ab49 100644
--- a/llvm/tools/llvm-pdbutil/Analyze.cpp
+++ b/llvm/tools/llvm-pdbutil/Analyze.cpp
@@ -125,7 +125,7 @@
 
     const auto &Collisions = CollisionsIter->second;
     outs() << TypeName << "\n";
-    outs() << formatv("    [HEAD] {0:x} {1} {2}\n", A.second,
+    outs() << formatv("    [HEAD] {0:x} {1} {2}\n", uint32_t(A.second),
                       getLeafTypeName(HeadRecord.Type), TypeName);
     for (const auto &Chain : Collisions) {
       if (Chain.TI == TI)