> The only way to guarantee all the possible undelegate implementations will be somewhat compatible is to put one here and have the tests specify its behavior.

We don't want or need to guarantee this behavior though.  The only behavior we need to guarantee is that `delegate` adds handlers one at a time and `undelegateEvents` removes them all.  If subclasses want to provide their own `undelegate` that's fine but we don't need to standardize it here.