This simplifies a lot of code, and will actually be necessary for an upcoming patch to add a hash calcluation visitor.
The idea before was that visitors should be examining records, not modifying them. But this is no longer true with a visitor which constructs a CVRecord from a yaml description. To handle this until now, we were doing some fixup on the CVRecord objects at a higher level, but it makes a lot more sense to just have the visitor fill out the fields of the CVRecord directly. In doing so I uncovered a few bugs related to Data and RawData and fixed those.