Reduce number of files in packed output

- Nupkgs, nuspecs and SHA files are not copied to output packages folder
- Only copy assemblies needed by the frameworks being packed with
- Use frameworks in project.json if '--runtime' was not specified
- Use values of '--runtime' to filter frameworks in project.json
- Use SHAs from global.json when resolving KRE_PACKAGES_CACHE
- Copy tools dlls from source packages to bin folder of output
"kpm restore" offline should succeed if there is no dependency missing

- If we know an exact minimum version (version without *) and that version
  is availale in local packages folder -> done
- If '--ignore-failed-sources' is specified and we have a package that
  satisfies the version ranges -> done
- Otherwise exit with errors
Update a logic to find the "root"
- Remove .git lookup and packages lookup
- As a fallback use the project folder

#663
Make the portable profile lookup thread safe
Use correct delete operation when doing "kpm pack --overwrite"
Use PackOperations.Delete() to prevent infrequent failure
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
Defaulting to CSharp6 language version