Define a locking regime for the members of struct timerfd and document
it so future code can follow the standard. The lock legend can be found
in a comment above struct timerfd.
Additionally,
* Adjust some code to follow the new locking regime.
* Initialize tfd_lock with MTX_RECURSE.
* Report st_ctim for stat(2).
* Do not pollute userspace with sys/proc.h.
* Move freebsd32 compat code to freebsd32_misc.c.
* Check if file has f_type == DTYPE_TIMERFD before assigning timerfd
pointer to f_data. This avoids undefined behavior in situations where
the underlying f_data has mismatched alignment with struct timerfd,
causing an invalid pointer assignment.