EB Registration

There's probably some more cleanup that can happen in the impl w.r.t. unregistering, but from an API perspective I think it looks good.
This doesn't look right. In the original logic subs.add() is only called if there are no handlers against the address. Now it's being called for most registrations. We only propagate the address information once.
I'd recommend keeping the original logic in registerHandler and unregisterHandler intact as it's easy to break, and simply make the methods private and call them from the new HandlerRegistration class.