Create new Struct object to help disassemble messages

provide the means to detect if a structure has a bad structure by indicating it should loop larger than it is, which likely means the whole thing is invalid.
Make Struct throw 'error' messages

Rather than use "return false", emit error messages, which node turns into Exceptions if there's no error listener, which is a more robust way to handle errors in message parsing.