added 42-byte wmo header, requiring code tidy

It was too messy to add a "42-byte offset, 32-bit file element" to the existing code.
I tidied it up so I could extend it cleanly.

I think there may further simplification to gain by merging ```FileExtension``` with ```FormatSpecification``` but I've not spent time thinking about this in any detail yet, as it seems out of scope here.

reviewer: cpelley