Streaming parser functionality and related utilities

This is a PR for streaming input JSON.  That means that for each leaf value (scalars and empty arrays/objects) `.` resolves to `[[<path>], <leaf>]`.  For example, `[0,[1],[],{},"a"]` looks like:

    [[0],0]
    [[1,0],1]
    [[1]]
    [[2],[]]
    [[3],{}]
    [[4],"a"]
    [[]]

In order to really be useful, meaning: in order to reduce streaming parser outputs usefully, we also add two new builtins: `input` and `inputs`, which produce the inputs that a jq program would normally consume.  I.e., these two invocations are equivalent:

    $ jq .

and

    $ jq -n inputs

The `input` builtin consumes and produces the next input from the jq executable's stdin or argument file inputs.  The `inputs` builtin consumes and produces all of them.  `input` is like `first(inputs)`, while `inputs` is like `repeat(input)`.

Speaking of which, we also add a `repeat(exp)` builtin that repeats `exp` until `exp` calls `break`.