Fix handling of zero length master elements.

The peek/read implementation used 0 as a sentinel value for "not yet read"
for both IDs and sizes.  This resulted in a read call reading a new ID after
a peek when encountering a zero length element and treating the length as a
"not yet read" sentinel.

An assert has been added to ne_parse to catch read unintentionally returning
a different value after a peek.