Add jq_handle concept

Add jq_handle_{create, create_stdio, get, delete}().  These functions
provide an extensible notion of I/O handle for jq programs.

Initially the idea is to have just I/O via `read` and `write` builtins.
Eventually the idea is that plugins can add their own handle types.

There is a single handle namespace; all handle "names" are integers,
starting from zero, like POSIX file descriptors.

Without I/O handles jq programs have no way to interact with the world
outside except via the input (e.g., from stdin, fed to `jq_start()` by
`main()`) and output (produced by `jq_next()`, written to stdout by
`main()`).  Without I/O handles jq programs are pure filters.

With a handle for stdin jq programs could reduce multiple inputs without
having to resort to the `--slurp` command-line option.  And jq programs
could implement the `--online-input` option without help from `main()`.

With a handle for stdout programs could produce large array outputs an
element at a time.

With the ability to open multiple files for reading jq programs could
perform joins.

With a memory handle object jq programs could keep state across multiple
inputs.

Note that jq programs w/o handles are very much sandboxed, therefore
allowing jq programs to open files should require a command-line option.
Add --args option
Add jq_runtime_flags enum type
Add fopen and popen builtins
Add `write`
Add `buffer` builtin for keeping state

The `buffer` builtin is like `fopen` of a temporary file in that it
returns a handle that can be written to and read from.  The last value
written is always the value returned by read, and buffers always start
out with a null value.
Document --args option
Document --allow-* options
Document `read`, `write`, `fopen`, and `popen`
Document the `buffer` builtin