Provide and use zip validation methods for the cache.

- `IsCachedZip` and `GetCachedZip` test zipfile integrity.
- Existing code modified to prefer these functions.
- NUnit tests included.
- Tested by manually truncating files in my cache directory, too. :)
- Closes #242

The reason I don't have all cache functions testing zipfile integrity is
because we may wish to store *other* things in the cache in the future
(eg: mod thumbnails).

Many thanks to @techman83 for providing test data.
Merge pull request #318 from pjf/242_zip_verify

Provide and use zip validation methods for the cache.