Detect this.fireEvent also inside expressions.

Rewrite the AST-traversing algorithm in a more generic way -
just looping over all the subtrees without having the actual
knowledge of what fields make sense to recurse into.
Implement detection of all method calls within a function.

First off it's just a Js::MethodCalls class that's not yet
connected to JSDuck.
Move node body extraction to Node class.
Extract ScopedTraverser class.

Move common functionality from Fires and MethodCalls to
ScopedTraverser, which provides the ability to loop recursively
through AST tree while keeping track of the variables bound
to `this`.
Integrate method calls detection.
Expand @fires with events fired by called methods.

A new processor to recursively populate the @fires list with events
fired by methods called from a particular method,
and by methods called from there,
etc.