Optimization: removed pointless clearing of unused fragment map data.

CopyData will set used parts of the map.
Always Invalidate automatically from InvalidateLayout.

InvalidateLayout actually depend on Invalidate since the relayout
is driven by paint.

Fixes bug that nothing happened if a widget called InvalidateLayout
but not Invalidate.
Added const version of TBSafeCast.
Added EVENT_TYPE_FILE_DROP, and CUSTOM.

Extend TBWidgetEvent by making it a TBTypedObject instead of adding even
more to it. Should perhaps refactorize it, but that will require lots of changes.

Implemented EVENT_TYPE_FILE_DROP for upcoming version of glfw (not used yet).