Add much commentary about CALL_JQ and call frames
Let @uri produce uppercase hexadecimal digits...

instead of lowercase ones.

According to RFC 3986,

   The uppercase hexadecimal digits 'A' through 'F' are equivalent to
   the lowercase digits 'a' through 'f', respectively.  If two URIs
   differ only in the case of hexadecimal digits used in percent-encoded
   octets, they are equivalent.  For consistency, URI producers and
   normalizers should use uppercase hexadecimal digits for all percent-
   encodings.

See https://github.com/stedolan/jq/issues/451 for details.

Test suite and manual are also updated to reflect this change.

Signed-off-by: Nicolas Williams <nico@cryptonector.com>
Added cross-compilation script to build libjq for iOS.

Signed-off-by: Nicolas Williams <nico@cryptonector.com>
TCO to the max!

    Close #446.

    Currently tested by disassembling and tracing various recursive jq
    programs by hand under valgrind.  An improved test framework that
    can test for errors and specific bytecode patterns is in
    development.
Fix off-by-one in TCO

    Now we have the ability to define a generator in jq:

        def for(cond; update):
            def _for:
                if cond then ., (update | _for) else . end;
            _for;

        for(. < 10; . + 1) # generates numbers between `.` and 10

    Running this by hand with --debug-dump-disasm (with a fix for that
    coming up next) we can see that the call to _for is optimized:

        _for:0:
          0000 DUP
          0001 CALL_JQ cond:0^1
          0005 JUMP_F 0022
          0007 POP
          0008 FORK 0012
          0010 JUMP 0020
          0012 CALL_JQ update:1^1
          0016 TAIL_CALL_JQ _for:0^1
          0020 JUMP 0023
          0022 POP
          0023 RET

    And timing this with 1000, 10000, 100000 iterations shows that
    indeed we must be applying TCO; otherwise, without TCO, this gets
    very slow very quickly.
Teach disassembler about TAIL_CALL_JQ
Fixed base64 issue with UTF-8 strings

Signed-off-by: Nicolas Williams <nico@cryptonector.com>
Fix typo in manual
Descrive generators, range() with by to manual
Multi-arity needs better errors (fix #438)
Add `range(init;upto;by)` (fix #317)
Add `while(cond; update)` (fix #314)
Document `error/1`
Add `try EXP catch EXP`
Add general `?` operator
Add support for negative indices for .[]; fix #462

Signed-off-by: Nicolas Williams <nico@cryptonector.com>
Add `foreach` and `limit`
Add `any/N` and `all/N` x N in (1, 2) (fix #455)

    Contributed by @pkoppstein.
Better check for lib has only functions (fix #138)
$var["foo"]=1 can't work as expected; doc fix #236