Moved CRC function from TokenStream to Assembler

Despite this requiring me to duplicate the string to array casting APIs and code, this move will reduce the amount of object dereferencing as the Assembler is the one who will be doing 99% of the CRCing in the future when it's expanding properties and labels to their full form.
* Major changes to syntax design
- Sectioning changed to be non-enlcosing
- Playing with the feel of new RAM syntax
In Progress - Radical overhaul of assembling opcodes

- Instead of massive IF lists everwhere, we're going to essentially reverse this system of decoding Z80 opcodes: http://z80.info/decoding.htm This will greatly reduce the amount of code needed to assemble opcodes and help a great deal with isloating the opcode complexities from the token parsing

- Assembled code/data is now stored in instances of the new Block class, so that the position of each block in the ROM can be decided after assembly and the details of Z80 opcodes can be isolated from the Assembler class

Also:
* Multiple files (such as includes) can be handled now
* Split error event descriptions into title and description
* Lots of general ongoing reorganisation and cleaning
Merged token numbers and token data numbers

This simplifies many things by having a single token for a Z80 instruction, instead of a "Z80" token, and then a data value for
particular instruction. Some slight complexity is added because checking if a particular token is a register / keyword / instruction &c. is not so immediately simple, but this was easily resolved by adding lookup tables to the TokenStream class.