Improve EventParser so it doesn't slurp the entire sub-DOM when it finds a matching node

@asutherland: Here's a PR to improve how EventParser works. It's now a little bit more event-driven, and when you find a matching node, you can create new events for the sub-tree. This lets us avoid building the entire sub-DOM, and should eliminate (or at least replace) some of the awkward boilerplate in GELAM.