Move UObjectHandle to Klawr.ClrHost.Managed.SafeHandles namespace
Slight change to the way utility functions are passed to managed code

Instead of passing each set of native utility functions to
IClrHost::InitEngineAppDomain() group them into a single structure and
pass that through instead. This means the IClrHost interface doesn't
need to be modified every time a new set of utility functions are added.
Pass native utility functions to managed code to deal with UE TArray(s)
Expose TArray properties in C# wrapper classes

Only TArray(s) of UObject* (or UObject-derived*), FString, FName, bool,
uint8, int16, int32, int64 are currently supported (though support for
uin16/32/64 will be added later). Only TArray<FName> has actually been
tested thus far (to a very limited extent), though that's a good
indicator that TArray<FString> works too. A lot more testing is still
required.

The native TArray<T> is indirectly wrapped by the managed ArrayList<T>
class, though properties in the generated C# wrapper classes currently
only expose the IList<T> interface of the ArrayList<T> class.