- Full support for strings in scripts. Implementation is a bit messy,
  but strings should be stored in (and retrieved from) a StringTable, and
  the string table should be put into a ParserContext, to be used by the
  parser. TODO: use a context for disassembly as well.
  StringTable is a bit sloppy due to the need to support tests using real data.
- Add a new parser class, rather than use loose functions.
- Remove actions.py, the functions have moved into the new parser class.
- Grammar is now stored in a class, rather than at the module level. Parse
  actions are no longer applied straight away, they're applied by the Parser
  class.
- When reading in the rules.json file, all external files are now parsed
  or loaded into memory after the rules.json has been parsed.
- Added some "mkdir" statements before writing files.
- Make the opcode for "compCurrentSpeechId" take a string ref argument. (should
  probably change the name of the function too)