True object and array streaming (#74)

* Add tests for getArrayStream() and getObjectStream()

* Implement lazy parsing for getArrayStream() and getObjectStream()

Now these methods should behave in the spirit of the specification, only
keeping the latest element in memory and parsing more data only as
necessary.

* Remove redundant else's

* Extract anonymous spliterator implementations into static classes

* Verify the event type we get in getObjectStream()

* Add unit tests for parse errors in getArrayStream and getObjectStream

* Make sure to close all parsers
2 files changed