ports: improve pointer sheet and synthesis in SYNTHESIZE-BOUNDARY-EVENTS
ports: improve pointer sheet and synthesis in SYNTHESIZE-BOUNDARY-EVENTS

The insight underlying the improvement is this:
SYNTHESIZE-BOUNDARY-EVENTS can be split into two phases:

1) Updating the port pointer sheet

   a) For enter events

   b) For exit events

   c) For other pointer events

2) Synthesizing boundary events and potentially dispatching the
   original event

1.a) and 1.c) simply update the port's pointer sheet to the innermost
unmirrored child containing the event's pointer position. 2.b) updates
the port's pointer sheet to the parent of event's sheet or NIL if the
parent is a graft.

After that, state 2) synthesizes and dispatches exit and enter events
based on the port's old and new pointer sheet (both can be NIL). If
the original is an enter or exit event, it is dispatched as part of
this process.

slyrus/mcclim,slyrus/mcclim