The collected events are the same as for iterparse(), but the
parser itself is non-blocking in the sense that it receives
data chunks incrementally through its .feed() method, instead
of reading them directly from a file(-like) object all by itself.

By default, it collects Element end events. To change that,
pass any subset of the available events into the events
argument: 'start', 'end', 'start-ns',
'end-ns', 'comment', 'pi'.

To support loading external dependencies relative to the input
source, you can pass the base_url.