Added additional matchers
Use services to provide an extensible way of converting nodes to trees
Separated out generic utilities and implementation agnostic code
Separated out implementation agnostic code
Added some javadoc
Moved tests