Reset compressed size when combining JAR/ZIP archives

zlib does not always deflate a resource to the same compressed size as
the original input.  The input resource may have been compressed using
a different version of libz, or different compression settings.

Before adding each entry to the ZIP, clone the entry and reinitialize
the compressed field to -1 as is done by the more commonly used
ZipEntry(String) constructor.

This fixes a rare case where including a JAR in a java_binary() may
throw an error such as:

  invalid entry compressed size (expected 4271 but got 4275 bytes)
Supply temporary directory to java_test()

Similar to genrule() give the test running JVM a temporary directory
below buck-out that is uniquely named for this test target. Send
the path in by both the TMP environment variable and java.io.tmpdir
system property.

Fixes https://github.com/facebook/buck/issues/13
Supply temporary directory to genrule() invoked java_binary()

JVMs on UNIX systems typically hardcode to use /tmp as the default
temporary area, unless system property java.io.tmpdir is set on
the command line. Pass the genrule's TMP location to the binary
as a system property so it can be used automatically.
genrule() should fail if any command fails

If a genrule is a complex sequence of shell commands the rule
should fail if any of the commands fails and its exit status was
not examined.

Fixes https://github.com/facebook/buck/issues/21