Fix XMP parse exception in EPS data
Fix XMP parse exception in EPS data

Also reduce number of string objects allocated during parsing by
operating on the stream directly where possible.

For example, the parsing of hex-encoded data no longer uses
intermediate string values for the lines. Instead, the parser reads
directly from the stream and returns the resulting byte array.

Similarly the XMP parsing code copies into a byte array accumulator
directly, until is sees the xpacket sentinel.

The main read loop can also scan over many lines that'll be ignored
without allocating anything on the heap.

rcketscientist/metadata-extractor,drewnoakes/metadata-extractor,PaytonGarland/metadata-extractor