Some refactoring:

- Added macros to clean up the code generation for rule application.
- Improved edge creation in transform: if source_id == target_id,
  only fetch the source and pass the source pointer twice to newEdge.
- Rewrote printGraph to print graphs in GP2 syntax. Previous graph
  printing scheme has been renamed to "printVerboseGraph".
  printRule has been augmented with a boolean flag to control the
  printing of verbose graphs or GP2 textual graphs.
Merge branch 'dev' of https://github.com/UoYCS-plasma/GP2 into dev
Host graph generation and more refactoring:

- Wrote a function in the generate module that takes the host graph's
  AST and emits code to build the host graph.
- Cleaned up and debugged the generate module, mostly adding and
  changing the macros in macros.h
- Rewrote the makefile as the old one was very messy. README updated
  accordingly.