Better performing manifest diff

I noticed that when you parse the manifest file, you create an array of objects: `[{name: , version: }]`. The issue is that every call to `getCorrespondingEntry` iterated over the array to get the entry `O(n)`. Your `getDetails` should instead create an object with name as key and version as value. The getCorrespondingEntry would then be `O(1)`. I have fixed that with this commit.