Rearchitect

Most of the work with this is wrapping my head around the architecture needed for this project. Here I've got rid of the TextParser and moved the source parsing into the same class that holds the Token Stream. The idea here is that the tokeniser is the only place the source code is managed, but the assembler will need to create multiple token streams to handle INCLUDEs, which it will process itself when it validates the token stream.

Moving the text parsing into the token stream means no more object boundaries to pass through when adding tokens. This speeds things up greatly. The 445KB source file parses into 100'000+ words in 0.07s when compiled! This is faster than previous commits even though more parsing is being done.