Fix GC_PTHREAD_PTRVAL definition for GC_PTHREADS_PARAMARK (Win32)

* win32_threads.c (GC_PTHREAD_PTRVAL): Define also if
GC_PTHREADS_PARAMARK (even w/o GC_WIN32_PTHREADS).
Add assertion to LOCK definition that lock is not already held

* include/private/gc_locks.h (UNCOND_LOCK): Add assertion that
I_DONT_HOLD_LOCK (lock is not held precondition).
Make GC_mark_lock_holder variable static

* include/private/gc_locks.h (GC_mark_lock_holder): Remove declaration.
* pthread_support.c (GC_mark_lock_holder): Change from GC_INNER to
STATIC (defined only if GC_ASSERTIONS).
* win32_threads.c (GC_mark_lock_holder): Likewise.
Mark GC_started_thread_while_stopped() as GC_INNER

* mark.c (GC_started_thread_while_stopped): Declare as GC_INNER
(declared only if GC_WIN32_THREADS).
* win32_threads.c (GC_started_thread_while_stopped): Define as GC_INNER.
Add double-lock assertion to GC_acquire_mark_lock

* pthread_support.c (GC_acquire_mark_lock): Add assertion that
GC_mark_lock_holder is not set to the current thread on the function
entry (i.e., assertion against double lock).
* win32_threads.c (GC_acquire_mark_lock): Likewise.
Define SET/UNSET_MARK_LOCK_HOLDER macros to set/check GC_acquire_mark_lock
(refactoring)

* pthread_support.c (SET_MARK_LOCK_HOLDER, UNSET_MARK_LOCK_HOLDER):
New macro (defined to no action unless GC_ASSERTIONS).
* win32_threads.c (SET_MARK_LOCK_HOLDER, UNSET_MARK_LOCK_HOLDER):
Likewise.
* pthread_support.c (GC_acquire_mark_lock, GC_release_mark_lock,
GC_wait_builder, GC_wait_marker): Use [UN]SET_MARK_LOCK_HOLDER
(instead of GC_mark_lock_holder setters and checkers).
* win32_threads.c (GC_acquire_mark_lock, GC_release_mark_lock,
GC_wait_builder, GC_wait_marker): Likewise.
* win32_threads.c (GC_mark_lock_holder): Change type to DWORD unless
GC_PTHREADS_PARAMARK defined.
* win32_threads.c (GC_acquire_mark_lock, GC_notify_all_builder):
Remove unnecessary cast of GetCurrentThreadId() result.
Do not set GC_lock_holder by call_with_alloc_lock if assertions disabled

* include/private/gc_locks.h (GC_lock_holder): Do not declare unless
GC_ASSERTIONS (the variable is not longer used to prevent recursive
reentry in the system call wrapper).
* misc.c (GC_call_with_alloc_lock): Remove [UN]SET_LOCK_HOLDER
explicit calls since GC_lock_holder is set properly by [UN]LOCK()
(in case of GC_ASSERTIONS).
* pthread_support.c (GC_lock_holder): Do not define unless
GC_ASSERTIONS; adjust comment.
* win32_threads.c (GC_lock_holder): Likewise.
Define [UN]SET_LOCK_HOLDER and I_[DONT_]HOLD_LOCK macros only if used
(code refactoring)

* include/private/gc_locks.h (SET_LOCK_HOLDER, UNSET_LOCK_HOLDER,
I_HOLD_LOCK, I_DONT_HOLD_LOCK): Do not define unless GC_ASSERTIONS.
* include/private/gc_locks.h (SET_LOCK_HOLDER, UNSET_LOCK_HOLDER):
Do not define unless THREADS.
Test NO_WRAP_MARK_SOME macro to suppress WRAP_MARK_SOME-specific code

* mark.c (WRAP_MARK_SOME): Do not define if NO_WRAP_MARK_SOME defined.