Implement an archive cache.

The archive cache is meant to significantly speedup fetching of resources from
within an archive, especially if this is done repeatedly.

TODO: use proper weak and soft reference maps, otherwise we're going to have
some serious memory leaks.
Use weak and soft references were appropriate.
Put them in their own package.
Properly synchronize access to the archive cache and archive cache pool.
Merge branch 'master' of https://github.com/msoeima/java-resources