The previous implementation hardcoded the mask for Rate 3/4 Data (0x01ff),
causing CRC check failure for Rate 1/2 on both encode and decode.
This patch also refactors to avoid code copying and fixes a bug where
calling DataBlock.Byte() on the output of Fragment.DataBlocks() produced
an incorrect CRC value due to Bytes() not resetting db.CRC before
performing it's own CRC calculation.
The serialized form should be 10 octets of user-data plus the two octets
for serial/crc.
Previous implementation forgot to account for the two extra octets when
allocating the final data slice.