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 
Since `FindLibraryBySnapshot` is removed, the `FindLibrary` can be merged into `FindLibraryByVersion` since it is only referenced in `FindLibraryByVersion`.