Restructure the command reading a bit to plug a leak.

Before, if readline didn't read but a newline (eg. `echo "" |kc` in
batchmode) we didn't free 'line', because it was in a conditional that
checked if 'e_line' has length, but it would not have, because readline
strips the last newline from the read string.

Now always do the "line = e_line" (in readline) or
"line = strdup(e_line)" (in editline), then free() dance, and if the
read in line has length, also check it with cmd_match().