Provide versioning support and automatic upgrading of Fragments
With minimal constraints on the RawFragmentHeader (fields may not be deleted or shrunk, only added or expanded), it becomes trivial to upgrade any given Fragment header from whatever version is currently is to the latest. Missing fields should be initialized with their respective INVALID value. Each old version of RawFragmentHeader should be made into a new class, which provides an "upgrade" method which returns a RawFragmentHeader object. As long as the "version" field remains in the same place in the structure, Fragment will be able to detect old version Fragments and upgrade them to the latest. Note that forwards compatibility is not guaranteed, if the size of the header changes, old code will not be able to read new Fragments.