Scripting: Add script engine for lucene expressions

Adds support for new "expression" script engine.

This is backed by lucene expressions.  These are javascript expressions, which can only access numeric fielddata, parameters, and _score.  They can only be used for searches (not document updates).

closes #6818
Can we add another TODO here? This seems massively inefficient:

1. expressions know if they refer to score, true or false. in lucene, Scorer.score() will only be called, if the expression actually needs it.
2. here it seems, something calls score() always, and passes it to the expression even if its maybe not needed? so it might be called uselessly on the scorer, even if the ranking function doesnt use it.
3. passing score in this hacky way im sure prevents inlining of actual scoring function into the expression and hurts performance.