Re-factored the extraction methods to reduce duplicated logic. This *has* changed the public api of the extractWebJarTo slightly in that the WebJar name is no longer the top level folder for the extraction. This is consistent then with the original extractWebJarTo method and could potentially re-use any cache logic. It is also consistent with the merging strategy that we want to see with node_modules.