Initial import of Haskell GP2 compiler
Added rudimentary GraphViz pretty-printer to Graph.hs
Merge branch 'master' of https://github.com/UoYCS-plasma/GP2 into dev
Started writing rule parser in ParseRule.hs
Added Cyan to list of Colours
Parser now handles edges
Changed definition of GraphMorphism to not discard information from rule graphs
Update Search.hs
Added temporary list handling fix to nodeValue
Added more rules to ParseRule
Fixing the mess.
Merging changes to GP2Graph
Merge resolved
Extended the parsing functions.

- Renamed functions in ParseGraph.hs to distinguish from analogous
  functions in ParseRule.hs
- Created file GPSyntax.hs for all the GP2-specific data types.
- Moved some shared functions from ParseGraph to ParseLib
- Modified function gpNode to parse an optional "(R)" and to parse
  the node's label.
Added variable declarations and interface to rule parser.
Fixed some errors in ParseRule.condition.
Update 37: Added functionality for character type and cyan mark.

I added a new token CYAN for the cyan mark. It is distinct from the
MARK token since cyan is only allowed in rule graphs. The host
graph grammar is hence unaffected as it uses only the MARK token.
Semantic checking for cyan has been added to graph_scan, which
required the addition of an extra bool, 'wildcard', in the Symbol
data structure. I also updated the pretty printer and AST files
with code to handle cyan and the CHAR_DECLARATIONS list type.

gpparser.y
- Removed CLabel : EMPTY and added CList : EMPTY
- Changed grammar rule for try-then-else. try-else is now allowed.
- Added char to variable declaration grammar.