PL-28959

Fix localized display names for entity types. Add a hook to
IEntityAccess to allow for overriding of the default behavior of
IType.getDisplayName().

Additional fix required because Java's TypeInfo returns a different
result for DisplayName than Java's Type! Added another method to
IEntityAccess to distinguish these two cases.
Add support for extending JavaTypes

Introduce two new annotations, @ExtendedType and @ExtendedProperty,
which tell the Java typeloader to create "extended" types and properties
for the annotated elements. The "extended" Java type is a composite
object, made up of the original JavaType object plus some additional
data. It is currently implemented via Java Proxy, with all
IJavaTypeInternal and java.lang.Object methods being dispatched to the wrapped JavaType, and
all other methods being dispatched to the extension object. And, we have
something similar of Java properties: the "extended" Java property is a
composite proxy object, like the Java type. The difference is that the
equals() and hashCode() methods are re-implemented to be based on the
owning type and the property name, in order to continue to support
property info objects being used in maps and collections.
Tests for @ExtendedType/@ExtendedProperty annotations
Tests for localizable Type.DisplayName/TypeInfo.DisplayName
Transplating changes