Remove Any::GetType() and rely on type name when comparing types

std::type_info::operator==() uses pointers to type names on some
implementations (e.g. gcc with __GXX_MERGED_TYPEINFO_NAMES defined).

This leads to problems such that types created in different translation
units could be treated as different even though they refer to the
same type.

Working with type_info directly seems unreliable and names of the
types should be used in comparisons directly.

Fixed the implementation of Any::IsTypeCompatible<T>() to use type
names and remove Any::GetType() to avoid any future problems for
client code to compare the type information manually.

Added Any::GetTypeName() and Any::GetUndecoratedTypeName() for
convenience.

BUG: 25132472
Change-Id: I8ba27a611c8edad2260dbed1c2f15633c8b3a3fe
5 files changed