Remove cut from greedy//2

It's quite possible for a caller to want to backtrack into greedy,
thereby giving back some of what it originally consumed.  For example in

    greedy(as),
    greedy(a),
    greedy(b).

The first greedy call has to give back a single "a" so the final two
rules can succeed.

In other words, greedy//2 tries to be as greedy as possible while still
allowing the grammar in which it resides to succeed.
Sketch of a lexer

I want syntax highlighters and code reformatting tools to be able to
work by just tokenizing the code.  I also want the language to have the
simplest syntax that I can manage.  That implies that there should be a
very small set of lexical tokens.

Implementing a small lexer is the best way to see whether I'm staying on
track with those goals.
Tokenize quoted text

This supports single, double and backquoted text.
Small DSL for testing the lexer
Documentation and tests and next_predicate support