sig: support sigs like "x=N|y=o"
sig: fill in nil/0 for optional unprovided args

strings just nil, not "" yet.
x=N,y:=1 works, x=N|y=N works, x=N|y:=1 not
sigopt: break bytecode calls, add numargs to vm_proto

needed to support optional args, otherwise not-provided args
just take garbage from the stack.
sigopt: also for the jit, add a testcase
sigopt: check mandatory arguments
sigopt: caller heuristics: check type of stack argument

we cannot pass the argcount around (e.g. send), so with optional args
check the stack type, and use a default or zero if not matching the sig.
use NIL_NAME and NILKIND_NAME, move _dump to objmodel.c
sigopt: if optional args are untyped use the stack var
more vm docs
sigopt: abuse unused vm_proto self arg for numargs
sigopt: try to fix the jit c-api a bit for optional args

calling the math op does not fill in defaults
sigopt: skip filling optional parameters with the JIT. document it

This is a functional limitation, but we cannot slow down the rare case
of calling from C into jitted methods, by checking all parameter types
and count on all jitted methods. We do it with the bytecode VM though.
API change: remove 3rd jit argument from potion_eval

This is already in P->flags & EXEC_JIT
p2: fix removed eval jit argument in p2
sigopt: check numargs also with call into c methods

found several arg. breakage in our tests
sigopt: fix num_to signature (missed block)
sigopt: fix buffile fopen signature (wrong ign)
sigopt: new potion_sig_check

extract the first arity checking part into seperate function.
used twice.
The filling part is a bit different.