Fix a bug with qualifier inference in decoding.

If one qualifier was a prefix of another (such as with qualifier types `v` and `value`), it was possible for the longer qualifier to be mistaken for the shorter one.

Fix it by first adding `ReusableByteArrayInputStream#setBuffer(byte [], int, int)`, which restricts the input stream to a given offset and length of the given byte array.

Secondly, `Type#decode` can take a length in addition to an offset. After parsing, if the input stream is not exhausted, an exception is raised.