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

/cc @lodejard @ChengTian 
Nah, this is still useful since is separates the http and non http in a clean way.