Create CustomEvent for better Dart interop

Add detail parameters.

All old libraries should work and Dart will pick this up as a CustomEvent with access to a map of details. No handling for the preventTap, but this should help.