[SPEC,TEST,FIX] add spec and tests for termvector api and fix inconsistencies

- index and type were not read from the uri with the _mtermvectors api
- ids were not read from the uri parameters with the _mtermvectors api
Deprecated use of partial fields in Java API, was already deprecated in the docs for the search API

Closes #4118
[DOCS] Added multi fields link to mapping page.
Deprecated ToXContent.Params#paramAsBooleanOptional in favour of paramAsBoolean

Closes #4817
Allow to configure indices.fielddata.breaker.limit with a ratio of the heap size.

Close #4616
SearchType randomization in integration tests.

Issue #4754 showed that using DFS_QUERY_THEN_FETCH instead of QUERY_THEN_FETCH
might expose interesting bugs.

Close #4793
upgrade to guava 16.0
also fixes #4830
Document `index.shard.check_on_startup`.
[SPEC] Renamed termvectors.* to termvector and mtermvectors
and fixed the YAML syntax errors
[TEST] Added newline at end of percolate tests
[SPEC] Specify bulk format for body in bulk, msearch, mpercolate
Move to [2.0] snap
Add the ability to retrieve fields from field data

Adds a new FetchSubPhase, FieldDataFieldsFetchSubPhase, which loads the
field data cache for a field and returns an array of values for the
field.

Also removes `doc['<field>']` and `_source.<field>` workaround no longer
needed in field name resolving.

Closes #4492
Fix formatting of license header
Throw an ElasticsearchIllegalArgumentException when allocating on a non-data node.

Today, it would fail with a NullPointerException.

Close #4833
HistogramAggregator: Finer-grained rounding.

The way `HistogramAggregator` works is that for every value, it is going to
compute a rounded value, that basically looks like
`(value / interval) * interval` and use it as a key in a hash table to
aggregate counts.

However, the exact rounded value is not needed yet at that stage, all we need
is a value that uniquely identifies the bucket, such as `(value / interval)`.
We could only multiply with `interval` again when building the bucket: this way
the second step is only performed once per bucket instead of once per value.

Although this looks like a micro optimization for the case that was just
decribed, it makes more sense with the date rounding implementations that we
have that are more CPU-intensive.

Close #4800
Accept `defaultOperator` in addition to `default_operator` for simple_query_string
[DOCS] Moved multi fields documentation into the core-types page
Removed docs about setting inheriting (was never added)
Made mapping samples formatting similar as other ones.
Terms aggregations: make size=0 return all terms.

Terms aggregations return up to `size` terms, so up to now, the way to get all
matching terms back was to set `size` to an arbitrary high number that would be
larger than the number of unique terms.

Terms aggregators already made sure to not allocate memory based on the `size`
parameter so this commit mostly consists in making `0` an alias for the
maximum integer value in the TermsParser.

Close #4837
Make all aggregators reader-context-aware.

This removes the overhead of polling a Bytes/Double/Long-Values instance in
every call to collect.

Additionally, the AggregationsCollector has been changed to wrap a simple array
instead of an ArrayList.

Close #4841