Poor first stab at a new, binary file format

I'm not entirely happy with this. It seems overly complex and having the
stack frame records be top level record types may turn out to be a
mistake. OTOH it might be a win if some record types end up valid as
top-level and within a sample. Generating this incrementally should be
easy. Meta data other than sections is restricted to the start of the
file. A section dictionary could be appended to the file, but I would
love to be able to do meaningful things if a file wasn't closed
correctly. Parsing this is likely a tad annoying - not entirely
different from a Sereal parser. On the upside, we don't particularly
care about being robust to malicious input or about extreme performance.
Comments welcome.