Implement a new graph interface
Use JDK 1.8
Clean up the code and add documentation
Make children final
Minor updates
Merge branch 'newgraph'