More Adhoc functions implemented

PSPPointer is always represented as u32_le.

Consider:
```c++
struct XYZ {
   PSPPointer<XYZ> next;
   char name[32];
   u32 attr;
} PACK;

int sceDoXYZStuff(u32 xyzPtr, u32 insertXyzPtr) {
   auto xyz = PSPPointer<XYZ>::Create(xyzPtr);

   NOTICE_LOG(HLE, "Great-grandchild's name: %s", xyz->next->next->next->name);
   PSPPointer<XYZ> after = xyz->next;
   xyz->next = PSPPointer<XYZ>::Create(insertXyzPtr);
   xyz->next->next = after;

   // Let's assume instead it was an array.
   NOTICE_LOG(HLE, "First name: %s, second name: %s", xyz[0].name, xyz[1].name);

   return 0;
}
```

For the most part, they work like normal pointers.  It's just that creating them from a u32 requires a static func call.

-[Unknown]