Delay the runtime graph walk until the last minute
- Cache it as well

#1011
More cleanup for kpm
- Removed FindLibraryBySnapshot since the input itself
is aware of snapshot versions.
- Use C#6 features to clean up some of the null checks
- Reuse FindLibraryByVersion in FindLibraryByName
- Added comments for RestoreOperations.FindLibraryMatch
- Removed IWalkProvider.FindLibraryByName as it was only used
by RestoreOperations specifically for project lookups.
Fixed comment
Printing probe locations when unable to find a runtime during kpm pack

Fixes : https://github.com/aspnet/KRuntime/issues/803