Stable Event IDs for Safari

Safari rewraps a JavaScript object before passing it to FireBreath. This is problematic for {add,remove}EventListener because they rely on the pointer to the NPObject as a stable ID. This patch creates a new stable ID and stores it in the __fb_event_id property on the object. 

See http://jira.firebreath.org/browse/FIREBREATH-243.