Refactored `element.trigger()` into a feature complete Strategy

- Refactored `element.trigger()` into a strategy which uses `CustomEvent` if available
- Normalized the `Event` shape between `CustomEvent` & `document.createEvent("HTMLEvents");`
- Fixing a reference error of `forEach()`
- Aligned variables because ... I do that