Allow an event name to be specified in Emitter::getSubscriptionCount
Emit [first/last]-{event-name}-subscriber-added/removed events
Ensure all observable methods work correctly for behaviors

This commit reorganizes things a bit, so that the constructor for
signals and behaviors always takes a function that the signal/behavior
calls when the first subscriber is added.
Iron out some circular require weirdness
Add Observable::scan
Add Observable::diff
Add Behavior::changes, which omits the initial value
Add Behavior::becomes

It returns a signal that yields `true` when the behavior's value becomes
the target value and `false` when the behavior's value changed from the
target value to something else. Other changes to the behavior's value
don't trigger the event.