Make kpm support three kinds of local repositories

- FlatListLocalPackageRepository: repo\{id}.{version}.nupkg
- NuGetStyleLocalPackageRepository: repo\{id}.{version}\{id}.{version}.nupkg
- LayeredLocalPackageRepository: repo\{id}\{version}\{id}.{version}.nupkg
Why does tho interface expose so much stuff? Who consumes these outside of the implementation itself?