Support processing of gems that have already been loaded into an IO object

@drbrain as mentioned on IRC, this is required to fix https://github.com/rubygems/rubygems.org/issues/625

In particular, this feature is used by rubygems.org to extract metadata
from uploaded gems that have not yet been written to storage.

I was looking for a way to do this without introducing a new abstraction but wasn't seeing it.

Could potentially do this without changing `Gem::Package` (by adding a new class or method), but that would duplicate a lot of code.

Suggestions welcome!