Made Conversion thread-safe and smaller in memory and storage

Conversion previously stored two copies of tracks, one as Refs and
the other as RefToBase. Only the RefToBase were used internally and
externally. However, the RefToBase were filled from the Ref as needed.
Therefore I dropped the Refs and instead fill the RefToBase from the
Refs in the appropriate constructors. This means the vector of RefToBases
does not have to be mutable and therefore the object is thread-safe.

Added a ROOT I/O rule which allows reading back the old format which
has the Refs in the case where only the Refs were ever filled.

Also changed order of member data so the compiler no longer had to add
padding between the member data.