Pass down locked object into inflated header locking
Allocate Thread as a pinned object

We use init_lock_ for thread initialization which should move during the
thread startup phase. Pinning it makes sure it doesn't.
Ensure trampolines mark themselves as gc dependent

We should ensure we are GC dependent again before returning to the
thread startup handling. This ensures that we can properly GC
independent again the in_new_thread trampoline function in Thread.