Update 54: Rewrote matching of concatenated strings + debugging

Concatenated strings are now matched by first converting the tree
representation of the AST into a list of string expressions (constants,
character variables, string variables) and matching that list with
an algorithm similar to that of labelMatch.

Bug fixes:

- Added case CHAR_DECLARATIONS to freeAST.

- In labelMatch, when host_list reaches NULL in the main loop, there is
  no check to see if we are examining the rule_list's last element.

- freeVariableList was incorrect.

- verifyAtomVariable returned bool; should return int to coordinate with
  its calling functions.