threads: allocate on user's snapshotting heap
The following comment is included in threads.h to explain this choice:
Intentionally NOT allocated with MODELALLOC or SNAPSHOTALLOC. Threads
should be allocated on the user's normal (snapshotting) heap to allow
their allocation/deallocation to follow the same pattern as the rest
of the backtracked/replayed program.
This fix solves problems seen in certain test programs regarding a
Thread being allocated in different locations for different executions.