Add UIEvent::new_with_arg() and MouseEvent::new_with_arg()

Fix #2383

These changes introduce `FooEvent::new_with_arg()` constructor. This constructor use to create `FooEvent` without call `FooEvent::InitFooEvent`.

#2383 says integrating `FooEvent::new()` and `InitFooEvent`, but we need to keep simple `FooEvent::new()` for `document.createEvent()`.

@jdm r?