Prove we can decode empty constants.

Turns out java can't read zero bytes from an EOF stream.
Make the other short read errors a little more helpful.