reader: rewrite nextFrame to fix various bugs.

Fixes #5 along with other bugs related to chunk size and handling of
EOF.

- compressed blocks may have length up to
  snappy.MaxEncodedLen(MaxBlockSize), the longest block which could
  successfully decode to MaxBlockSize or fewer bytes. blocks are
  checked to have decoded length at most MaxBlockSize before being
  decoded.

- successfully decodes padding and skippable chunks with size up to
  2^24-1, the maximum representable chunk size.

- fixes error reporting for reserved unskippable blocks with length
  greater than MaxBlockSize up to 2^24 -1. instead of being reported
  as too long they are reported as unskippable blocks.

- ~~simplify reader tests.~~ (edit: I ended up leaving the existing tests mostly the same)

- fix occurrences of the reader returning EOF after partial decoding.
cosmetic, it might be useful to make this a little helper function (it's re-used below in `readBlock`, for example)