Added package repository path lookup order
- Implement package repository lookup logic in kpm and runtime
- Share ResolveRootPath implementation
- Added packages parsing for global.json file
- packages flag overrides all lookup rules
- Always set packages location when doing a kpm pack
- Resolve the full packages path from global.json
Added support for KRE_PACKAGES_CACHE
- Cleaned up PackageRepository and made it lazy
- Remove extra constructor for NuGetDependencyResolver
- Made DefaultPackagePathResolver resolve based on name and version
- Made the rest of kpm pack use the DefaultPackagePathResolver for consistency
Fix root resolution
Don't read the nuspec until the very last minute
- Added package info which stores the package id and version and nuspec directory.
 This is used for version resolution so we don't need to evaluate the nuspecs
 for all versions of a package up front.
- FindCandidate now resolves the correct package info then returns the appropriate
 IPackage after it is resolved.
- Skip null versions
Updated the makefile.shade to handle new package locations
Restore null version support for now
Use mono or mono symlink if present

This will help in cases where KRE is installed on a machine to use a
custom build of mono that doesn’t interfere with the standard mono
release. That works by going into the KRE folder and creating a symlink
to exactly the mono executable that should be used to host k commands.
Reacting to System.Security.Cryptography.Encryption package rename
"kpm restore" puts SHA files on disk
Don't use the resolved items in GetLibraryExport.
- Overwrite references with the more recent target framework
Fix race condition caused by concurrent access to global cache