MAJOR: checks: rework completely bogus state machine

The porting of checks to using connections was totally bogus. Some checks
were considered successful as soon as the connection was established,
regardless of any response. Some errors would be triggered upon recv
if polling was enabled for send or if the send channel was shut down.

Now the behaviour is much better. It would be cleaner to perform the
fd_delete() in wake_srv_chk() and to process failures and timeouts
separately, but this is already a good start.
diff --git a/src/dumpstats.c b/src/dumpstats.c
index 17bf973..988f94c 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -2933,7 +2933,7 @@
 					}
 
 					chunk_appendf(&trash, "\"><u> %s%s",
-						tv_iszero(&sv->check.start)?"":"* ",
+					        (sv->state & SRV_CHK_RUNNING) ? "" : "* ",
 						get_check_status_info(sv->check.status));
 
 					if (sv->check.status >= HCHK_STATUS_L57DATA)