Adds an optimized copy from one jar file to another.

The SuperShady.java code should be attributed to scottb@squareup.com

Testing Done:
To test the updated jar-tool, I used one of our targets with about 100 jar files. The unpacked size is 303MB. The super-shady version takes under 7 seconds as compared to the default version’s time of a little over 3 minutes:

jsirois/twitter-sync ./super-shady-exemplar
real    3m4.610s
user    14m10.336s

sys    0m12.502s

zundel/super-shady-jar-tool ./super-shady-exemplar
real    0m6.256s
user    0m5.061s

sys    0m4.216s
Also, the super-shady version compression is much better.

-rw-r--r--  1 zundel  zundel  198500393 May 11 11:51 /tmp/exemplar-orig.jar
-rw-r--r--  1 zundel  zundel   84200072 May 12 04:55 /tmp/exemplar-super-shady.jar

I don’t know why that is, maybe a difference in the compression level passed to the zip algorithm. I did have to fix the unit test because it expected all entries in the zip file to be deflated. It might also be that using DEFLATE on directory entries and other zipfile entries that don’t need it is mushrooming the size of the file in the original jar-tool version. I did a check to make sure that all the extracted files were the same between both versions. I unpacked the jars with ‘unzip’ into 2 directories and ran ‘md5’ on each file in each unpacked dir

Bugs closed: 290

Reviewed at https://rbcommons.com/s/twitter/r/345/