Initial signal port for Linux

This only works on Linux as it's implemented with a Linux specific API:
signalfd.

Only one port can be open'ed at a time, because it wouldn't know which
port the signal should be sent to otherwise.

A sample script:

s-p: open signal://

s-p/awake: func [evt][
	switch evt/type [
		read [
			print ["read signals:" mold evt/port/data]
			foreach sig evt/port/data [
				if found? find [15] sig/signal-no [
					print ["quitting because of SIGTERM"]
					halt
				]
			]
			clear evt/port/data
			read evt/port
		]
	][
		print ["unhandled events" mold evt]
	]
]

read s-p

forever [
	wait [s-p 10]
]
[Linux] Implement signal port with POSIX APIs

signalfd relies on new Linux kernels
[Linux] Save signal mask when jumpping

POSIX setjmp might not save signal masks. With the addition of signal
scheme, this is required. Or the following code will not work:

attempt [
   p: open [scheme: 'signal mask: [all]]
   print x ;throw an error
]

;signal mask is not restored.
Merge branch 'sig-port' into call-atronix