DOC: document the listener state transitions

This was done by reading all the code affecting a listener's state,
hopefully it will save some time in the future.
diff --git a/doc/internals/listener-states.fig b/doc/internals/listener-states.fig
new file mode 100644
index 0000000..23ec87d
--- /dev/null
+++ b/doc/internals/listener-states.fig
@@ -0,0 +1,140 @@
+#FIG 3.2  Produced by xfig version 3.2.7a
+Portrait
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+6 3960 3195 5040 3735
+1 1 0 3 0 7 51 -1 20 0.000 1 0.0000 4500 3465 495 225 4500 3465 4995 3465
+4 1 0 50 -1 18 10 0.0000 4 120 375 4500 3465 FULL\001
+4 1 1 50 -1 16 10 0.0000 4 120 90 4500 3645 7\001
+-6
+6 2160 3105 3240 3645
+1 1 0 3 0 7 51 -1 20 0.000 1 0.0000 2700 3375 495 225 2700 3375 3195 3375
+4 1 0 50 -1 18 10 0.0000 4 120 630 2700 3375 LIMITED\001
+4 1 1 50 -1 16 10 0.0000 4 120 90 2700 3555 8\001
+-6
+6 3105 1305 4185 1845
+1 1 0 3 0 7 51 -1 20 0.000 1 0.0000 3645 1575 495 225 3645 1575 4140 1575
+4 1 0 50 -1 18 10 0.0000 4 120 555 3645 1575 LISTEN\001
+4 1 1 50 -1 16 10 0.0000 4 120 90 3645 1755 5\001
+-6
+1 1 0 3 0 7 51 -1 20 0.000 1 0.0000 900 450 495 225 900 450 1395 450
+1 1 0 3 0 7 51 -1 20 0.000 1 0.0000 2700 450 495 225 2700 450 3195 450
+1 1 0 3 0 7 51 -1 20 0.000 1 0.0000 4500 450 495 225 4500 450 4995 450
+1 1 0 3 0 7 51 -1 20 0.000 1 0.0000 2700 2481 495 225 2700 2481 3195 2481
+1 1 0 3 0 7 51 -1 20 0.000 1 0.0000 900 3375 495 225 900 3375 1395 3375
+1 1 0 3 0 7 51 -1 20 0.000 1 0.0000 900 1575 495 225 900 1575 1395 1575
+2 2 0 2 13 13 52 -1 20 0.000 1 0 -1 0 0 5
+	 270 90 5130 90 5130 810 270 810 270 90
+2 2 0 2 6 6 52 -1 20 0.000 1 0 -1 0 0 5
+	 270 2925 1530 2925 1530 3825 270 3825 270 2925
+2 2 0 2 17 17 52 -1 20 0.000 1 0 -1 0 0 5
+	 270 1170 1530 1170 1530 1980 270 1980 270 1170
+2 2 0 2 28 28 54 -1 20 0.000 1 0 -1 0 0 5
+	 2070 1170 5130 1170 5130 4320 2070 4320 2070 1170
+2 2 0 2 4 4 52 -1 20 0.000 1 0 -1 0 0 5
+	 2070 2070 3330 2070 3330 2880 2070 2880 2070 2070
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 2
+	1 1 1.00 60.00 120.00
+	 1395 450 2250 450
+	 0.000 0.000
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 2
+	1 1 1.00 60.00 120.00
+	 3195 450 4050 450
+	 0.000 0.000
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 4
+	1 1 1.00 60.00 120.00
+	 4500 675 4500 945 3645 945 3645 1350
+	 0.000 1.000 1.000 0.000
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 3
+	1 1 1.00 60.00 120.00
+	 1170 3195 1485 2430 2205 2475
+	 0.000 1.000 0.000
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 3
+	1 1 1.00 60.00 120.00
+	 2205 2565 1530 2565 1260 3240
+	 0.000 1.000 0.000
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 3
+	1 1 1.00 60.00 120.00
+	 4140 3330 3960 2655 3105 2610
+	 0.000 1.000 0.000
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 3
+	1 1 1.00 60.00 120.00
+	 1395 3375 1710 3240 2205 3330
+	 0.000 1.000 0.000
+3 0 0 3 0 7 50 -1 20 0.000 0 1 0 2
+	1 1 1.00 60.00 120.00
+	 3150 1575 1395 1575
+	 0.000 0.000
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 2
+	1 1 1.00 60.00 120.00
+	 2700 3150 2700 2700
+	 0.000 0.000
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 3
+	1 1 1.00 60.00 120.00
+	 2205 3420 1755 3645 1350 3465
+	 0.000 1.000 0.000
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 3
+	1 1 1.00 60.00 120.00
+	 4230 3645 2655 4185 1170 3555
+	 0.000 1.000 0.000
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 3
+	1 1 1.00 60.00 120.00
+	 3825 1800 4230 2115 4500 3240
+	 0.000 1.000 0.000
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 3
+	1 1 1.00 60.00 120.00
+	 1080 3600 2700 4320 4365 3690
+	 0.000 1.000 0.000
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 3
+	1 1 1.00 60.00 120.00
+	 3240 1710 1215 2115 900 3150
+	 0.000 1.000 0.000
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 3
+	1 1 1.00 60.00 120.00
+	 3465 1800 2835 1845 2745 2250
+	 0.000 1.000 0.000
+3 0 0 3 0 7 50 -1 -1 0.000 0 1 0 3
+	1 1 1.00 60.00 120.00
+	 3060 2655 3870 2790 4050 3375
+	 0.000 1.000 0.000
+4 1 0 50 -1 18 10 0.0000 4 120 375 900 450 NEW\001
+4 1 0 50 -1 18 10 0.0000 4 120 315 2700 450 INIT\001
+4 1 0 50 -1 18 10 0.0000 4 120 810 4500 450 ASSIGNED\001
+4 1 1 50 -1 16 10 0.0000 4 120 90 900 630 0\001
+4 1 1 50 -1 16 10 0.0000 4 120 90 2700 630 1\001
+4 1 1 50 -1 16 10 0.0000 4 120 90 4500 630 2\001
+4 1 0 50 -1 18 10 0.0000 4 120 630 2700 2475 PAUSED\001
+4 1 0 50 -1 18 10 0.0000 4 120 555 900 3375 READY\001
+4 1 1 50 -1 16 10 0.0000 4 120 90 2700 2655 3\001
+4 1 1 50 -1 16 10 0.0000 4 120 90 900 3555 6\001
+4 1 0 50 -1 18 10 0.0000 4 120 615 900 1575 ZOMBIE\001
+4 1 1 50 -1 16 10 0.0000 4 120 90 900 1755 4\001
+4 1 0 50 -1 16 7 0.0000 4 120 930 2520 1530 zombify_proxy()\001
+4 0 0 50 -1 16 7 0.0000 4 75 510 4185 2070 maxconn\001
+4 1 0 50 -1 16 7 0.0000 4 105 465 2115 3690 resume()\001
+4 1 0 50 -1 16 7 0.0000 4 120 315 1845 3195 limit()\001
+4 1 0 50 -1 16 7 0.0000 4 120 255 2295 4185 full()\001
+4 1 0 50 -1 16 7 0.0000 4 105 465 2790 3915 resume()\001
+4 0 0 50 -1 16 7 0.0000 4 120 660 4050 1980 enable() &&\001
+4 2 0 50 -1 16 7 0.0000 4 120 660 1260 2340 enable() &&\001
+4 2 0 50 -1 16 7 0.0000 4 90 540 1125 2475 !maxconn\001
+4 1 0 52 -1 17 8 0.0000 4 135 420 585 1935 stopped\001
+4 1 0 52 -1 17 8 0.0000 4 90 360 1755 765 No FD\001
+4 1 0 52 -1 17 8 0.0000 4 105 345 495 3780 Polled\001
+4 1 0 52 -1 17 8 0.0000 4 135 1080 4500 4185 FD ready, not polled\001
+4 0 0 52 -1 17 8 0.0000 4 135 585 2070 2205 shut(sock)\001
+4 0 0 50 -1 16 7 0.0000 4 105 405 3060 1980 pause()\001
+4 0 0 50 -1 16 7 0.0000 4 105 405 3465 2610 pause()\001
+4 0 0 50 -1 16 7 0.0000 4 75 510 3465 3330 maxconn\001
+4 0 0 50 -1 16 7 0.0000 4 105 675 3285 3195 resume() &&\001
+4 0 0 50 -1 16 7 0.0000 4 105 405 2745 3015 pause()\001
+4 2 0 50 -1 16 7 0.0000 4 105 405 2025 2385 pause()\001
+4 0 0 50 -1 16 7 0.0000 4 105 675 1710 2745 resume() &&\001
+4 0 0 50 -1 16 7 0.0000 4 90 540 1665 2880 !maxconn\001
+4 1 0 50 -1 16 7 0.0000 4 120 420 1755 405 create()\001
+4 1 0 50 -1 16 7 0.0000 4 120 300 3555 405 add()\001