full list of changes below:

- made library more generic as any object can be added to graph now
- added more tests
- improved code coverage
- added more domain exceptions
- fixed few bugs
- removed test files from under code coverage report
- changed class names and methods names at my own discretion :)
- changed documentation according to changes I've made to the library