Adding back EventSink and BehaviorSink

Since the there is quite a lot of firing code, it makes sense to pull it
all out into a separate class.