refactoring methods to support generic graph vertex type and creating utilities methods
moving  graph search methods to graph utilities, and making generic methods that work on all types implementing interfaces
more generics, code increasing in changes, may branch, not sure I like the way this is going.
more generics implementation - switching dictionary to use comparer and tests to test my types