Make parsing of uri and body parameters consistent with single term vector api

uri parameters were not all parsed for the multi term vector request. This commit
makes sure that all parameters are parsed and used when creating the requests for the
multi term vector request.

In order to simplify both code and json request, the request structure now allows
two ways to use multi term vectors:

1. Give all parameters for each document requested in the docs array like this:

```
{
   "docs": [
      {
         "_index": "testidx",
         "_type": "test",
         "_id": "2",
         "terms": [
            "fox"
         ],
         "term_statistics": true
      },
      {
         "_index": "testidx",
         "_type": "test",
         "_id": "1",
         "terms": [
            "quick",
            "brown"
         ],
         "term_statistics": false
      }
   ]
}
```

2. Define a list of ids and give parameters in a separate parameters object like this:

```
{
   "ids": [
      "1",
      "2"
   ],
   "parameters": {
      "_index": "testidx",
      "_type": "test",
      "terms": [
         "brown"
      ]
   }
}
```

uri parameters are global parameters that are set for both cases. They are overwritten
by parameter definitions in the body.

Also, this commit adds the missing setParent(..) and setPreference(..) to TermVectorRequestBuilder.
[DOC] add doc for multi term vector api

closes #3998
Fix issue 3989

Multi term vector request never returned if shards for all requested documents
were non existent.

closes #3989
Squashed old stuff :D
Start using RamAccountingTermsEnum
no need to create a new breaker on shutdown
Add test for RamAccountingTermsEnum
Add breaker stats to _node/stats, with all the fixins
remove unneeded logging
better instantiating of MemoryAggregatingCircuitBreaker
Adjust circuit breaker after actual data is loaded, much more accurate now
Pass CircuitBreakerService instead of the breaker, allowing for updates
Adjust circuit breaker during onUnload of field data
Adjust RamAccountingTermsEnum after all terms have been aggregated
Javadoooooooocs
Use readOptionalStreamable
Make CircuitBreakingException a RuntimeException (because it is)
remove uneeded synchronize
Remove synchronization, instead using AtomicLong
use writeOptionalStreamable