Interface to format data to and from an underlying archive. Methods on this class are validated to be correct with the current archive state (eg. EnterObject/LeaveObject calls are checked to be matching), and do not need to be validated by implementations.