decode should throw if the buffer ends before varint does

This patch makes decode throw if the buffer ends while still in the "continue" state.

I'm working on streaming binary decoder,
so I need to know if there wasn't enough room for a valid value.