Allow search templates stored in an index to be retrieved and used at se...

Allow running search templates stored in an index at search time

This change allows search templates stored in an index to be used at search time.
You can run an indexed template by
```
GET /_search/template
{
    'templatename' : '/index/language/id',
    'params' : {
        'param1' : 'foo'
    }
}
```
Running the template will fail if the template cannot be found, if the templatename
starts with a '/' but does not conform to the /index/type/id triple
If the named template cannot be found an error will be raised. Currently the
templates are NOT cached. We also use TransportGetAction directly instead of using
Client to avoid a circular dependency between Client and ScriptService

See #5637
we have utils for these kind of checks in `Strings.hasLength` maybe we can use them here too? or we add `Strings.isEmpty()` :) I know it's unrealted and preexisting