In preparation for providing random access visitation of type streams, we need some plumbing that allows the vistation infrastructure to pass type indices through the pipeline.
This patches takes the simplest possible approach. No existing interfaces are changed, but there is now an additional overload of CVTypeVisitor::visitTypeRecord which takes a TypeIndex. When this overload is called, instead of invoking the normal visitTypeBegin(CVType&) method on the callback interface it invokes a new callback visitTypeBegin(CVType&,TypeIndex).
To demonstrate how this is useful, a new implementation of TypeDatabase is introduced which allows random insertion and access of type records, and the TypeDatabaseVisitor is taught to be able to add records to either a TypeDatabase or a RandomAccessTypeDatabase, depending on how the visitor is constructed.