Added proper logging including a log level (importance) and depth (nested events)

* Created oz80 module to hold public enums
* Fixed 64K limit of text box
* Added a title to error messages based on the error number
* Improvements to text parsing to support RAM names
Finally decided on CRC methods, subsequent clean-up

* Removed the assembler-driven class as I could not contact the original
author, and would rather not rely on voodoo that I can't
understand/modify/fix
* Created a new CRC class and moved string casting into there. This
cleans up the Assembler and TokenStream classes a lot!
Removed the string database from Assembler, and moved it into TokenStream

Strings were being stored in Assembler so as to pool together all strings from all TokenStream instances (source code files) so that this stuff is available without having to know which file it came from (i.e. cross-file references).

That's not really the right approach beacuse an individual string from a token is not the whole picture. A property such as ".loop" is meaningless on its own as it needs to be normalised to its parent, e.g. "::section:label.loop" and these names are stored in the label / variable databases accordingly.

So we'll be storing only label / variable &c. names in the Assembler class and not string fragments, which will stay in the TokenStream instances.
Fixed a parsing bug with skipped characters

* Changed Token Value to 64-bit. Not all implications of this are
fulfilled yet
* Moved the caching of tokens from the Assembler into the TokenStream
itself. It might be slower, but for now it is at least a lot cleaner
* Added basic `SECTION` parsing
* Moved function to get error title / description to the public module
* Improved some error messages
* Fleshed out ASCII codes enum
* Added an oz80 file that will be used to test the parser