Make the Cstruct API a bit more natural

The Cstruct library encourages the use of 'sub', 'shift' etc to create additional views over the same underlying buffer. This removes the need to pass in additional 'offset' and 'length' parameters.