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
"kpm pack" excludes all folders starting with dot by default
Removing out var usage
Use IReport for output in all kpm sub-commands

- Use IReport for output in "kpm pack"
- Use IReport for output in "kpm build"
- Add color to warnings and errors