Change type info injection macros

Caching return values in static local variables. Adding type_info_static() function.
Change way type_info of base class is stored

Every instance of type_info now have pointer to base type_info. And macros-derived type_info classes return base_name() through virual method.
Add type_info::make_delete so we can delegate deletion of void* to their type_info
Remove type name versions of cast and is_type_of
Move registration invoked in derived type_info constructor to root type_info method.
Introduce cast table - cache if one type is kind of another i.e. could be casted to it.
Prevent static variable initialization order fiasco bug
Add initialization function in namespace root.
Update examples and tests according to previous changes.