[codeview] Add a type visitor to help abstract away type stream handling

Summary:
Port the dumper in llvm-readobj over to it.

I'm planning to use this visitor to power type stream merging.

While we're at it, try to switch from StringRef to ArrayRef<uint8_t> in some
places.

Reviewers: zturner, amccarth

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D19899

llvm-svn: 268535
diff --git a/llvm/lib/DebugInfo/PDB/Raw/TpiStream.cpp b/llvm/lib/DebugInfo/PDB/Raw/TpiStream.cpp
index 5d71674..20aa304 100644
--- a/llvm/lib/DebugInfo/PDB/Raw/TpiStream.cpp
+++ b/llvm/lib/DebugInfo/PDB/Raw/TpiStream.cpp
@@ -116,5 +116,5 @@
 }
 
 iterator_range<codeview::TypeIterator> TpiStream::types() const {
-  return codeview::makeTypeRange(RecordsBuffer.str());
+  return codeview::makeTypeRange(RecordsBuffer.data());
 }