Handle multiple text events properly

This code appends text events if it already exists.  This occurs when
processing XML entries such as &apos; which come through from expat as
multiple text events.  It also does not assume to modify the XML data.

Before these changes,
<foo>J &amp; J</foo>
would be processed as {tag: 'foo', text: 'J'}

Using appending only, it would be interpted as {tag: 'foo', text: 'J
&J'}.
Eliminating trimLeft() yields {tag: 'foo', text: 'J & J'} which is
correct.