Major event overhaul

Dirty member from base has been renamed to MarkDirty to avoid
conflicting with Dirty(bool) from group
Visibility of element also checks for valid width and height
Removed old dragging code
State can now be marked new so messages are now independent of dirty
flag
Minor refactor of IsPointInside
Messaging a group will now always notify children
Other minor refactoring