4 fixes, 1 enhancement

Great little library. Using it with our data exposed a few bugs, which are addresed in this PR. It would be great to have this merged back into your project, then we won't need to keep the fork around.

- fix: include EOF marker in buffer length calculation
- fix: correct offset for header terminator
- fix: don't turn all falsy values into zeroes
- fix: append EOF marker at correct offset
- enhancement: structure() optionally accepts passed-in field metadata, since the field types/sizes in many cases cannot be determined from the data alone (eg when there are nulls).