TEST: tests for Node, Graph

* add tests for Node and Graph classes
* getter and setter in ruby style
* holding nil pointers in methods
CODE: code restructuring

* GraphBase class implement a basic graph class
* AhoCorasickGraph class extend the GraphBase class
  Now users can use the GraphBase class as they wish
  and if they want to fully use the Aho-Corasick algorithm
  they can easily use the extended class without taking
  care of the back end implementation
* unittests for GraphBase and AhoCorasickGraph
* Haystack class creates one more level of abstrction from
  the AC graph