1. Let 'isa<T>()' calls 'IsSameTypeId()' when T is final,
and we add 'final' mark to some final classes derived from Base;
2. Generate type id at compile time using constexpr hash function,
remove TypeIdManager and related code;
3. Add a tool script 'scripts/check_tid.sh' to check tid uniqueness;
4. Improve type search in 'proto_exporter.cc' and 'convert_utils_py.cc';
5. Add some missed MS_DECLARE_PARENT;
6. Ensure calls of 'parent_t::IsFromTypeId()' are all inlined.
update logic for cache
clean up code
add test cases for new api
update include of code
specify the resolve attr to ClassMember
avoid resolve attr of self