If a string exists in the data, instead of being written, the function
'emitCStringToData()' will instead return the address of the match
within the data section.
Then, I can search the jump table for that address, and use the existing
jump entry or append a new one.
Fixes#168
Parameter lists are read manually, rather than delegating to
parsePrecedence, because that was causing issues.
function bodies are read as block-level statements, just like the entire
files.