serialize shrinkwrap payload in order

**Use case:** when running `npm shrinkwrap` sometimes the keys move their location in the serialized json file. If we check the shrinkwrap file into git, then we have unneeded git diff noise of key/value pairs in the serialized json file moving from one location to another

JavaScript objects will serialize in an arbitrary key order because key enumeration is not well defined.

To avoid this we sort the keys and create a fresh object in a specific order. v8 will serialize this object in a consistent fashion.

The problem is *probably* caused because `commands.ls` will write keys to the `pkginfo` in arbitrary order based on disk IO latency and such