src/users: Full parsing of \r, \n, and \r\n

This fix is pretty clever and relies on a trick of how the switch-case
block works.

case '\r':
    if (recvq[qpos+1] == '\n')
        qpos++;
case '\n':
    goto eol_found;

input: '\r'
output: goto eol_found;

input: '\n'
output: goto eol_found;

input: '\r\n'
output: qpos++; goto eol_found;