function_score: add optional weight parameter per function
Weights can be defined per function like this:
```
"function_score": {
"functions": [
{
"filter": {},
"FUNCTION": {},
"weight": number
}
...
```
If `weight` is given without `FUNCTION` then `weight` behaves like `boost_factor`.
This commit deprecates `boost_factor`.
The following is valid:
```
POST testidx/_search
{
"query": {
"function_score": {
"weight": 2
}
}
}
POST testidx/_search
{
"query": {
"function_score": {
"functions": [
{
"weight": 2
},
...
]
}
}
}
POST testidx/_search
{
"query": {
"function_score": {
"functions": [
{
"FUNCTION": {},
"weight": 2
},
...
]
}
}
}
POST testidx/_search
{
"query": {
"function_score": {
"functions": [
{
"filter": {},
"weight": 2
},
...
]
}
}
}
POST testidx/_search
{
"query": {
"function_score": {
"functions": [
{
"filter": {},
"FUNCTION": {},
"weight": 2
},
...
]
}
}
}
```
The following is not valid:
```
POST testidx/_search
{
"query": {
"function_score": {
"weight": 2,
"FUNCTION(including boost_factor)": 2
}
}
}
POST testidx/_search
{
"query": {
"function_score": {
"functions": [
{
"weight": 2,
"boost_factor": 2
}
]
}
}
}
````
closes #6955
closes #7137