Reads the NxsReader data file from the input stream provided by `token'.
This function is responsible for reading through the name of a each block. Once it has read a block name, it searches for a block reader to handle reading the remainder of the block's contents.
The block object's Read() method is responsible for reading the END or ENDBLOCK command as well as the trailing semicolon.
Execute() handles reading comments that are outside of blocks, as well as the initial "#NEXUS" keyword.
As discussed in Errors in NEXUS files exceptions raised during parsing result in calls to NexusError()
If `notifyStartStop' is false then ExecuteStart and ExecuteStop functions will not to be called.
The order of operations is:
Reimplemented in PublicNexusReader.