Refactor exceptions so we can shadow rubyzip exceptions.

This so we can stop rubyzip leaking out.
Use the shadowed ZipError in the tests.
Use the shadowed ZipError in the example scripts.