Reduce memory usage by making send a function instead of a closure.
Turn listen handler into a pointer to a function so we can omit it in the
case where we just want a value passed directly through without any change.
Factor event into event_impl.
Add 'parent' association between event_impls to some other needed primitives.
Factor listen_impl to use weak pointers so we can clean up listener when the
event_sink gets cleaned up.
Progress on memory saving. Some debugs need to be removed.
targets are now not put into closures.
Now it cleans up a significant amount of memory when you throw out the event_sink.
Move unsafe_new_event() to a different line.
Now it actually releases memory when you throw away a behaviour_sink().
Fix memory leak in split() primitive.