Create a new shared pointer type stdext::shared_object_ptr and stdext::shared_obj
using boost::intrusive_ptr
Advantages:
* half memory usage
* faster and lightweight
Disadvantages:
* using weak_ptr is not supported anymore
* compiling seems slower
* Fix recursive reference memory leak in UIWidget
* Make Event/ScheduledEvent memory-leak safe
* Fix exit crashs by freeing graphics resources before destroying GL context
* Add many asserts to avoid any leak regression