fix edge case where event target or relatedTarget were null
add hold/holdpulse/release events
"cancel" events should fire up, but prevent tap