add getTerms for uid filter
using node settings to get the node name for thread names
fix tests to shutdown threadpool
fix test to shutdown threadpool
abstract compression
abstract the LZF compression into a compress package allowing for different implementation in the future
Better fix for mv field highlighting issue #1994
add simple compression bench
Stored Fields Compression, closes #2037.
Compressing the stored fields file (the .fdt file) directly allows to have better compression on the size of the index, specifically when indexing (and storing) small documents. The compression will be considerably more effective compared to compressing each doc on its own (when setting compress on the _source mapper). The downside is that more data needs to be uncompressed when loading documents.

The settings to control it is `index.store.compress.stored_fields` set to `true` (it defaults to `false`), and can be enabled dynamically using the update settings API. This allows to enabled compression at a later stage (i.e. old time based indices), and then optimize the index to make sure it gets compressed.
better compressed input offset data structure
Store Throttling (node level and/or index level) with options on merge or all, closes #2041.
Allow to configure store throttling (only applied on file system based storage), which allows to control the maximum bytes per sec written to the file system. It can be configured to only apply while merging, or on all output operations. The setting can eb set on the node level (in which case the throttling is done across all shards allocated on the node), or index level, in which case it only applied to that index.

The node level settings are indices.store.throttle.type to set the type, with values of none, merge and all (defaults to none). And, also, indices.store.throttle.max_bytes_per_sec (defaults to 0), which can be set to something like 1mb.

The index level settings is index.store.throttle.type for the type, with values of node, none, merge, and all. Defaults to node which will use the "shared" throttling on the node level. And, index.store.throttle.max_bytes_per_sec (defaults to 0).
Improve cluster resiliency to disconnected sub clusters + fix a shard allocation bug with quick rolling restarts
Two main changes:

Improve cluster resiliency to disconnected sub clusters. If a node pings a master and that node is no longer registered with the master, improve the rejoin process of that node to the cluster. Also, if a master receives a message from another master, pick one to force to rejoin the cluster (based on cluster state versioning).
On quick rolling restart, without waiting for shard allocation, the shard allocation logic can mess up its counts, causing for strange logic in allocating shards, or validation failures on routing table allocation.
Failure to recover properly on node(s) restart
When a node restarts, it might be canceling one recovery of a shard id only to get another one in the next cycle. We should detect this case and handle it properly.

This is a fix to the annoying message seen by users: suspect illegal state: trying to move shard from primary mode to replica mode.
add debug log if using compressed stored fields
Rest API: Add `HEAD` support for `/{index}/{type}/{id}` to quickly check if doc exists or not, closes #2047.
change index.store.compress.stored_fields setting to index.store.compress.stored
better type based inference when using scripts
Return 503 when threadpool limit is reached, closes #2048.
better thread naming
River name re-use not possible between node shutdowns, closes #1921.
This effectively happens because we don't flush before deleting a mapping, which causes it to still reply the changes happening for it on the transaction log, meaning the mapping are still around on the index level.
Store Compression: Term Vector Vector, closes #2049.