preinstall: Use separate cache for preinstall

To work around a race condition when npm calls itself, use a separate
npm cache directory when performing the pre-install of peerDependencies.

Fixes #123