EventLog Flow topic and post actions (FlowReplies)

This will track all events defined in https://meta.wikimedia.org/wiki/Schema:FlowReplies

It works by setting some data-attributes on nodes that you want to track (on
click). Those attributes are:
* data-flow-eventlog-schema: name of the schema
* data-flow-eventlog-entrypoint: name of the entrypoint param
* data-flow-eventlog-action: name of the action param
* data-flow-eventlog-forward: selectors to nodes to forward to

This forwarding is because we track nodes in a funnel. Most properties for
subsequent calls in a funnel are the same - only action will be different.
For follow-up nodes to be tracked in a funnel, the only data-attribute that is
needed is data-flow-eventlog-action (which is what the clickhandler is bound to)

Since things in Flow happen through a variety of ways, we can't use the click
handler for everything we want to log:
* opening a new-topic or reply-bottom form is via a focusin event
* cancel-attempt, cancel-abort & cancel-success are done by JS
* preview & keep-editing are done by JS

I've added a way to add interactiveHandlers on focus (patch prior to this) so
we can deal with the former. The latter is solved by directly calling the log
code from JS. This way, this eventlogging stuff is at least still *mostly*
driven by data attributes.

I've also made all interactiveHandlers & apiHandlers (patch prior to this)
return deferred objects, which only resolve (or reject) when all of the work
is really done. That way, we can delay the forwarding until we're certain the
nodes will have already been rendered (that's async)

Change-Id: Ic011a6130184aadae539eced307bf982f84c990d