Highlight fields in request order

Because json objects are unordered this also adds an explicit order syntax
that looks like
```js
    "highlight": {
        "fields": [
            {"title":{ /*params*/ }},
            {"text":{ /*params*/ }}
        ]
    }
```

This is not useful for any of the builtin highlighters but will be useful
in plugins.

Closes #4649