Added a default conversion for serializing JSON

This fixes the issue of downloading an item with a datetime object in the metadata.  We had a discussion of different ways to do this under issue #535, and, as a consequence, I just am using a `default=str` conversion.

Also fixed an issue outputting a zip file with a large number of files.  Specifically, if the file count was greater than 65535 or the compressed size was larger than 2^32-1, the existing code would fail.

Add tests to check downloading metadata with a datetime and invoke some of the large zip file code.

Addresses issue #535.