Converted References to Pointers for Efficiency

These fields are only used to help with tag dispatching. Creating values
to use as references that will not be used is expensive, especially when
structures and nested messages get involved.

This change increased performance enormously on the benchmarks.
Fixed an issue with serialization dynamic offsets

Fields located after a dynamically sized field were not previously
serialized to the proper location.  This applies to messages with
vectors.