Add JsonPath type
Remove FunctionBinder abstraction
Add constant-folding optimizer for RowExpression
Remove bindConstantArguments

This is actually not needed since the compiler will now emit the right
invokeDynamic to load the constant before invoking the function.
Remove bindOperator from BootstrapFunctionBinder

This gets us closer to treating functions and operators uniformly.
Record invokeDynamic bindings in the target class

The bootstrap method now uses the caller information to get to the callsite map.
This has a few benefits:
* No need to generate a classloader-isolated Bootstrap for every compilation to
  avoid memory leaks. The callsite map is associated with the target class. When
  the class goes away, so does the map
* Better encapsulation: the lookup of the bootstrap method can now be done statically
  on the Bootstrap class initializer
* BootstrapFunctionBinder and callsite map no longer need to be concurrent. They are
  accessed by a single thread (the compiler) and the target class gets an immutable copy
  of the callsite map.
* The model is now somewhat simpler and easier to reason about.
Remove "is approximate" from signature

This doens't belong in the Signature object. It should be in FunctionInfo, instead
Add convenience constructor to Signature for non-internal functions