Lots of pointer work, sorted type definitions again to try and be more deterministic
* Can use UE4's smart pointers by applying "unrealptr" modifier to native type
* Expanded automatic null checking to work across all pointers instead of just UE4 GC objects
* Can have weak smart pointers (both std and UE4)