Refactor archives to support creating archives.

Archive class used StrictJarFile, which only supports reading.
This CL makes Archive a base class which is going to have two
subclasses: ReadableArchive (current Archive) and WriteableArchive.

ReadableArchive will be used to open archives with StrictJarFile.
WriteableArchive will be used to create archives with ZipOutputStream.

Test: Unit tests.
Bug: 20822019
Change-Id: I40174c8d970bc3098929854231622e3006f6263e
(cherry picked from commit d683f9756b0c56d28693c4d0269217e8fcebf76a)
(cherry picked from commit c8d3007d5ce12d0bc04bbda018c47889fabc8fd3)
8 files changed