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.