Add a CloserFlusher utility class

This class handles multiple I/O resources gracefully. It is inspired by Guava's
Closer and adds support for Flushable as well.
JarUtil: use a CloserFlusher

The previous code was bound to leak two I/O resources: the FileInputStream and
FileOutputStream created on the input and output files.

Using a CloserFlusher fixes this.

Use .closeQuietly() in the finally block to mimick the previous code, even
though it is ultimately not recommended.