3603: PySDK Collection objects support file-like APIs.
This commit adds an open() method to CollectionReader and
CollectionWriter. They mimic the built-in open(), returning objects
that implement as much as the Python file API as I can reasonably
manage.
There are a couple of backwards-incompatible changes to
StreamFileReader here:
* seek() now defaults to SEEK_CUR rather than SEEK_SET behavior.
* readlines() returns a list, and no longer supports decompression.
These changes bring the object closer to a file-like object. We
reviewed our existing Python code, including known Crunch scripts from
users. Nobody was using seek(), and nobody was obviously relying on
the decompression behavior of readlines(). So we believe this is
reasonably safe.
(Contrast name(), which lots of things are using, so we provide a
backward compatibility shim for it.)