fix, PEBKAC, eventually break out of co_snarf() read loop

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, rework co_snarf() into a prechecking while loop with drain behind it

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
Merge branch 'tool/terms'

* tool/terms:
  minor, rework co_snarf() into a prechecking while loop with drain behind it
  fix, PEBKAC, eventually break out of co_snarf() read loop
minor, allow co_snarf() to read from parameterised file descriptor

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, unify classify1() and classify0(), get rid of fops.h stuff

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, refactor classify_buf() again, make classify_c() a nested routine

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, store n-gram state statically

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
hygiene, unmark classify_buf() as noinline and support up to 32-grams

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
Merge branch 'tool/terms'

* tool/terms:
  hygiene, unmark classify_buf() as noinline and support up to 32-grams
  minor, store n-gram state statically
  minor, refactor classify_buf() again, make classify_c() a nested routine
  minor, unify classify1() and classify0(), get rid of fops.h stuff
  minor, allow co_snarf() to read from parameterised file descriptor