For further work on cursoricon_new, I need a proper way to delete object when they are not referenced anymore. The need arises because a cursor can be in use when a process dies, and there needs to be a way to cleanly wait for the cursor to be detached before completely dropping everything.
Also, I believe that inter-object references ar quite of a mess right now on the user-side of win32ss, so let's take this as an occasion to slap a bit of sense into it.
Here is a first patch patch which is not too invasive . The only notable thing here is the use of callbacks to allocate objects, and also that, now, a thread cannot be deleted if there are still handles which belong to it (See the IntReferenceThreadInfo / IntDereferenceThreadInfo calls in object.c).
A CR will be created as I progress on this issue.