Fixes two problems:

  1) If we have any outstanding events at time that stop is called, we
     want to call stop on them as well.  So, we had iterated through
     all outstanding events in waldoActiveEventMap and called stop on
     each.  However, this could lead to deadlock.  This is because in
     to prevent invalidation while iterating through each element in
     the map, we take a lock on the map.  Similarly, to remove events
     from the map, we take a lock.  Before, we had not used a
     recursive lock.  This could lead to deadlock.  Now, we are using
     a recursive lock.

  2) Each event's stop method required an additional argument:
     whether or not the stop had been initiated by my partner or
     myself.  (If not initiated by partner, then you should forward a
     message to your partner telling partner that you were stopped.
     Otherwise, do not forward.)
Previous code ignored the chance that a backout exception could be raised directly in the call that was made to the internal part of a public method.  This code adds try-catch around internal calls to catch backout exceptions.