fix Issue 13416 - dead lock in FreeBSD suspend handler

- use pthread_suspend_np to which is aware of
  those dead-lock situations (e.g. during a pthread call)
  and resolves them by continuing the thread until
  it leaves the critical regions

- override SIGCANCEL to save registers on
  stack and store the stack top, then call
  the default SIGCANCEL handler