feat: Introduce NiftyPointer*Events for pointer/mouse events

The following events will now be published by a NiftyNode in response to
pointer/mouse events:

- NiftyPointerClickedEvent
- NiftyPointerDraggedEvent
- NiftyPointerEnterNodeEvent
- NiftyPointerExitNodeEvent
- NiftyPointerHoverEvent
- NiftyPointerPressedEvent
- NiftyPointerReleasedEvent

Additionally this commit adds two new methods to the NiftyNode class:
screenToLocal() and localToScreen() to convert coordinates from screen
to local node coordinate space.

Additionally this commit fixes an issue with changes of position and
dimensions of a NiftyNode not being applied automatically.