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.