Don't clear the meaning when setting forward

There is no need to do this and it only caused confusion for me when
debugging things.
Don't add recursively locked objects to thread lock list

We don't have to add these objects multiple times to the list of objects
locked for this thread. These also weren't cleaned up when doing a
decrement for recursive locks.
Use static_cast instead of C style cast