Abstract input and output

Mostly in preparation of \i and \o but also results in much cleaner handling of -c and -f.

As a side effect, warnings and errors now go to stderr properly.

Fix piping into e.g. less by skipping jline as it handles it poorly.  Luckily jansi-native was already bundled as there are, apparently, very few options to get a Java isatty-alike.