top: keep events not values, demotions to top&bottom streams.

Now that the index deletes expired events, demotions can be
handled in a cleaner way. Instead of keep a map of event key
to value in top's internal state, we keep a map of event key
to event, when an event gets bumped from the top, instead
of needing to provide a third stream, the initial event
will be re-streamed to the bottom stream and an expired version
will be sent to the top stream.

The behavior remains optional since and can be toggled with
the `demote?` argument.
Add a test for demotions
Merge pull request #309 from pyr/feature-better-top

top: keep events not values, demotions to top&bottom streams