"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

parent #591 
@davidfowl , if we don't make this change, when we are offline, `FindLibraryBySnapshot` with remote providers returns `null` and then this method (`FindLibraryCached`) returns `null`, which means `Unable to locate ...`. However, if there is a local package falling into the version range, we should return it, instead of `null`. So I call `FindLibraryBySnapshot` with local providers to retrieve local package here when remote retrieval finds nothing.