streams/throttle no longer leaks tasks, handles expired events

Complete rewrite of (throttle). Throttle takes advantage of the new
riemann.time scheduler to schedule ticks on its own, and since it
doesn't use recurrent tasks, won't leak tasks if improperly shut down or
waste resources when inactive. Throttle now correctly aggregates expired
events and forwards them as expected, instead of shutting down when an
expired event arrives.

Closes #19.