Rework igor.struct to support dynamic structures.
Between binarywave and record.variables, there was a good deal of
parsing that was conditional on previously parsed data. Rather than
continue writing spaghetti code to handle each specific case, I've
taken a stab at a general framework for updating structures during
parsing (DynamicStructure and DynamicField). The docstrings should
explain how they work. The implementation still has a few holes, but
it works on each of the files in my test suite.