TWeakInterfacePtr does not properly support const types

Because the stored UObject type within TWeakInterfacePtr is non-const, the class does not support const types. We have made a change to correct this:

template<class T>
struct TWeakInterfacePtr
	using TObjectType = typename TCopyQualifiersFromTo<T, UObject>::Type;

then for every mention of UObject, we replace it with TObjectType, so that it carries the modifiers from the template type.