cosmetics, define feature macros to be able to use strdup() and friends

- strcasecmp() (src/onion/dict.c)  requires _BSD_SOURCE
- strdup() (src/onion/onion.c)  requires _XOPEN_SOURCE>=500 or _BSD_SOURCE
- pthread_rwlocK_t (src/onion/types_internal.h)  requires _XOPEN_SOURCE>=500
- getline() (examples/otop/otop.c)  requires _GNU_SOURCE
cosmetics, always guard definition of _GNU_SOURCE macro

Some compilers are allergic to redefinitions of the _GNU_SOURCE macro
if the macro body isn't literally identical to the previous definition.

This patch guards against redefinitions.
cosmetics, adhere to POSIX signal() signature

POSIX mandates the second argument of signal() be of type void(*)(int), so
this changeset adapts the callback routines (free_onion()) to adhere to
POSIX' declaration.
Merge pull request #28 from hroptatyr/bld/non-gcc

[pull-req] bld/non gcc, facilitate icc builds