BUG/MINOR: signals/poller: ensure wakeup from signals

Add self-wake in signal_handler() to fix a race condition with a signal
coming in between checking signal_queue_len and entering polling sleep.

The changes in commit 43c891dda ("BUG/MINOR: signals/poller: set the
poller timeout to 0 when there are signals") were insufficient.

Move the signal_queue_len check from the poll implementations to
run_poll_loop() to keep that logic in one place.

The poll loops are terminated either by the parameter wake being set or
wake up due to a write to their poller_wr_pipe by wake_thread() in
signal_handler().

This fixes issue #1841.

Must be backported in every stable version.
diff --git a/src/ev_evports.c b/src/ev_evports.c
index 7d3e8a8..0a7df15 100644
--- a/src/ev_evports.c
+++ b/src/ev_evports.c
@@ -178,10 +178,8 @@
 	thread_idle_now();
 	thread_harmless_now();
 
-	/* Now let's wait for polled events.
-	 * Check if the signal queue is not empty in case we received a signal
-	 * before entering the loop, so we don't wait MAX_DELAY_MS for nothing */
-	wait_time = (wake | signal_queue_len) ? 0 : compute_poll_timeout(exp);
+	/* Now let's wait for polled events. */
+	wait_time = wake ? 0 : compute_poll_timeout(exp);
 	clock_entering_poll();
 
 	do {
@@ -219,7 +217,7 @@
 			break;
 		if (timeout || !wait_time)
 			break;
-		if (signal_queue_len || wake)
+		if (wake)
 			break;
 		if (tick_isset(exp) && tick_is_expired(exp, now_ms))
 			break;