BUG: fix crash when sending interrupt signal to fft functions

the SIGINT handling code must be in the GIL released section so the
longjmp does not skip the retaking.
This implies that the signal handlers must use thread local storage to
avoid a crash when sending interrupt to threaded fft functions.
Distribution of SIGINT to each threads must be handled by the
application as only the master thread receives it
Closes gh-4634
MAINT: move variable attribute checks into a common variable

also rename GCC_ATTRIBUTES to FUNCTION_ATTRIBUTES
Merge pull request #4692 from juliantaylor/fft-interrupt

BUG: fix crash when sending interrupt signal to fft functions