Add awk-like BEGIN/END
Document BEGIN/END
Add `while(condition)`/`until(condition)` builtins

Now that we have I/O it helps to be able to write something like:

    % jq -n 'until(0|eof)|read(0;{})|...'

Without these builtins that's not possible.  The best approximation
would be:

    % jq -n 'range(0;<large number>)|if (0|eof) then empty else read(0;{}) end'

which works, but is suboptimal: the `range()` expression will produce
*all* its values, meaning that after EOF jq would spend a lot of cycles
doing nothing much.

Given `read`, `eof`, and `until`, it's now possible to write a
significant part of main.c as a jq program!  Like so:

    % # This:
    % jq '<stuff>'
    % # is equivalent to this:
    % jq -n 'until(0|eof)|read(0;{})|<stuff>'

Which is a very nice result.  Sprinkle an `eval` builtin and we can have
a REPL!
Document `while` and `until`
Extensive testing of I/O enhancements
Test jq -e and BEGIN/END interactions
Add stdin/out/err/buf aliases for 0/1/2/3
Document stdin/out/err/buf
Test stdin/out/err/buf