Here's a new patch, hopefully addressing most of the feedback received so far.
I'm not thrilled with the amount of overlap between rom_stream.c and serial_stream.c, but I tried to clean things up a bit in the latter. If folks are happy with the changes, I can apply them to rom_stream.c in another patch.
Another issue is that the various CONFIG_COMPRESSED_ROM_STREAM options are now sort of misnamed, as they apply to serial streams as well. This can be addressed separately as well.
--Ed