Character maps, macro label fix, and misc bugfixes

I've added a new feature called character maps (or charmap for short). It works like this:
You write a line like the following in your assembly code:
charmap input_string, output_byte

Whenever a string is used in the assembly, the following happens. Each input_string is sorted by string length, largest first. Then each input_string is looped through, and if the input_string is found in the assembly string, it is replaced with the output_byte. Any untouched characters in the input string are copied byte-for-byte, as was before.

If a charmap is defined before any sections start, it is the default used in all sections. If a section contains a charmap, only those definitions are used.

The macro label fix is described in detail in the commit message.

The misc bugfixes include implicit function declarations, unused variables, etc.