Prefix var names with an underscore.

Seems to be what gcc does :) prevents clash with asm keywords, which is
probably why.
Assign a more appropriate symbol.
Extend the symbol table to track strings, funcs.
Add sanity checks to add type, var decl funcs.
Actually check + add func to symbol table.
Initialise the symbol table correctly.
Add ability to lookup functions in the symbol table.
Add the ability to add strings to the symbol table.
Add string literals to the symbol table.
Add test code for function declaration duplication.