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.