Adding Resource handle object and resource interface. For multi-threaded resource loading.
IResource is the interface for the actual resource objects (mesh, texture, shader).
OResourceHandle is an object which serves as an interface between the program and the actual resource. While the resource is still loading (can sometimes take a while, like with meshes), the handle returns NULL when Get() is called. Once the resource finishes loading, the handle starts returning a pointer to the resource from Get().
There are still some special cases to look out for, namely resource load failures and handle deletions while the resource is still loading.