Implement zip cache callbacks

The following discussion from !351 (merged) should be addressed:

  • @ayufan started a discussion:

    As a follow-up maybe we would have "a kind of callback" on zipArchive?

    func (z *zipArchive) onCacheAdded() {}
    func (z *zipArchive) onCacheRefreshed() {}
    func (z *zipArchive) onCacheEvicted() {}

    We would simply call these methods on these points, and they could update metrics on a will, assuming that if you ever call onCacheAdded() the onCacheEvicted() will be called as well.

And implement tests !351 (comment 418262162)

Edited by Jaime Martinez