Clarify and reimplement flatMap

No longer so sure this is the right name for this function. flatMap
makes sense for arrays, because arrays can be intuitively “flattened”:

    [[1, 2], [3], [4]] → [1, 2, 3, 4]

But can event-streams be flattened? A stream is like an infinite
array; a stream-of-streams could be interpreted thus:

    [[1, 2, ...], [57, 102, ...], ...] → ???

If we use the streams-as-arrays metaphor, we never get past the first
element, since it, like all elements, is infinitely long.

There are a couple of interpretations that make a bit more sense.

Firstly, what Event.flatMap was doing before this commit, which was
to interleave elements from all substreams, giving something like:

    → [1, 57, 2, 102, ...]

This, of course, depends on the order in which the events arrive.

Secondly, what Signal.flatMap does, and what Event.flatMap now does,
which is to only receive events from the most recently received
substream. This makes sense for Signal, but feels a bit arbitrary
for Event.

These functions have been made consistent since they have the same
name, but it may make more sense to have two separate functions and
to retire the flatMap name.