Add Groovy as a scripting language, change default from mvel -> groovy

Sandboxes the groovy scripting language with multiple configurable
whitelists:

`script.groovy.sandbox.receiver_whitelist`: comma-separated list of string
classes for objects that may have methods invoked.
`script.groovy.sandbox.package_whitelist`: comma-separated list of
packages under which new objects may be constructed.
`script.groovy.sandbox.class_whitelist` comma-separated list of classes
that are allowed to be constructed.

As well as a method blacklist:

`script.groovy.sandbox.method_blacklist`: comma-separated list of
methods that are never allowed to be invoked, regardless of target
object.

The sandbox can be entirely disabled by setting:

`script.groovy.sandbox_enabled: false`

Also fixes all tests to run with Groovy instead of mvel
same as above.... 

we might want to think about adding something like an updateableFloat to the map only once in the ctor and
then only update it here which safes us the lookup / update for score on every document? ie...

```Java
   private static final class UpdateableFloat extends Number {
        float value;
        @Override
        public int intValue() {
            return (int)value;
        }

        @Override
        public long longValue() {
            return (long)value;
        }

        @Override
        public float floatValue() {
            return value;
        }

        @Override
        public double doubleValue() {
            return value;
        }
    }
```
and then we can simply update the var:

```Java

public static class GroovySearchScript implements SearchScript {

        private final Script script;
        private final SearchLookup lookup;
        private final Map variables;
        private final UpdateableFloat score = new UpdateableFloat();

        public GroovySearchScript(Script script, SearchLookup lookup) {
            this.script = script;
            this.lookup = lookup;
            this.variables = script.getBinding().getVariables();
            variables.put("_score", score);

        }

        @SuppressWarnings({"unchecked"})
        @Override
        public void setNextScore(float score) {
            this.score.value = score;
        }

```

I just checked if it works and it seems to be just fine. Yet, I found that we don't test this at all in our code, can you add some tests for `_score`.  Ping @brwe she had some benchmarks that we can turn into tests...