Implement string literals as a separate tree type

Rather than collapsing them to aggregates in the parser
Code generation for new string literals
Fix some code generation errors caused by new string literals
Add constant folding for string literals
Fix crash compiling Xilinx libraries