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
I've pulled it out to a separate class so it can be reused.