Handle pipelining
The current handle_connection() implementation breaks when two AUTH requests are issued out-of-order and we're expecting a CONT response, e.g.:
949433 17:16:19 write(8, "FAIL\t7\tuser=foo\n", 19) = 19
949433 17:16:19 read(8, <unfinished ...>
949433 17:16:36 <... read resumed>"AUTH\t8\tPLAIN\tservice=smtp\tnologin\tlip=198.167.222.108\trip=1.2.3.4\tsecured\n", 4096) = 82
949433 17:16:36 write(8, "CONT\t8\t\n", 8) = 8
949433 17:16:36 read(8, <unfinished ...>
949433 17:17:00 <... read resumed>"AUTH\t9\tPLAIN\tservice=smtp\tnologin\tlip=198.167.222.108\trip=1.2.3.4\tsecured\tresp=blahblahblah==\n", 4096) = 183
949433 17:17:00 write(2, "error: unexpected command 'AUTH'\n", 33) = 33
here we're expecting a CONT for request id 8 but we get instead a new AUTH request with id 9.