Add isc_spinlock unit with shim pthread_spin implementation
The spinlock is small (atomic_uint_fast32_t at most), lightweight synchronization primitive and should only be used for short-lived and most of the time a isc_mutex should be used.
Add a isc_spinlock unit which is either (most of the time) a think wrapper around pthread_spin API or an efficient shim implementation of the simple spinlock.
Closes #3977 (closed)