Adding LibraryDependency class to represent graph edge

LibraryDependency contains the Library (Name,Version) of a
dependency statement, but also adds the place to hold
flags or options that occur where the dependency is declared
Intermediate commit to rebase
Finishing plumbing dependency type through to package creation
Moving LibraryDependency* classes to better location
Removing commented code
Renaming Add and Remove properties, removing Group utility function
PR feedback
Changing "preproc" keyword to "preprocess"
Fixing unit test
Fixing unit tests