Extract to unique directory to avoid concurrent unpacking issues

When a package depends on phantomjs multiple times, typically through transitive dependencies (e.g. karma-phantomjs-launcher, casperjs, grunt-casperjs, etc.), I've been running into problems which seem to be caused by parallel processes extracting the tarball/zip to the same target directory.

This change attempts to fix these concurrency issues by ensuring that every installation process extracts the downloaded archive to a unique target directory before copying it.