Ensure consistent memory layout for checksums.

This de-couples the checksums from their corresponding memory order attributes. With this change, if the memory order is changed but the logical values are unchanged the order attribute will reflect the change but the checksum will be unchanged.

NB. It also fixes a bug in the `mask_order` attribute so it now correctly reports the memory order of the mask, instead of just repeating the memory order of the data.