Provide conduit-friendly interface

This interface prompted other changes:

  * Abort the search with `^D` instead of `^C`. Catching `^C` is not a great
    idea in Haskell. (The second `^C` is catched by the runtime anyway.)

  * Cleanup clears the whole screen starting with the line with the cursor.
    Usually terminal software does that for us, but it's not enough when more
    than one search is initiated in the program.