* preserve Window callback zones Run Window callbacks in the zone they are registered in. This is consistent with how other native API work, such as `scheduleMicrotask`, `Timer`, and `dart:io`. This also enables the developers to use the `Zone` API to capture and log unhandled Dart errors. * refactor wrapping * new line * fewer if checks; group getters/setters/fields * inline _invokeOnPointerDataPacket