test: RelocationTests.testCancellationCleansTempFiles may fail due to io errors while check temp files are deleted

Windows can throw NoSuchFileException when using File.walkFileTree and deleting files concurrently. This commit changes IO exceptions into assertion error so that assertBusy will wait for them as well.
[UTILITIES] Introduce a RefCounted interface and basic impl

We already have two places duplicating this rather hairy logic, this
commit intorduces a new RefCoutned interace and an abstract implementation
that can be used for delegation. It factors out all the reference counting
and adds single and multithreaded test for it.

Closes #8210
[CACHE] Expose concurrency_level on all caches

The concurrency level allows to configure the cache internal segments
used to cache data. This can have direct impact on evicition rates since
memory bound caches are equally divided into segments which can cause
early evictions if cache entries are not well balanced.

Relates to #7836
[STORE] Don't catch FNF/NSF exception when reading metadata

When reading metadata we do catch FileNotFound and NoSuchFileExceptions
today, log the even and return an empty metadata object. Yet, in some cases
this might be the wrong thing todo ie. if a commit point is provided these
situations are actually an error and should be rethrown. This commit
pushes the responsiblity to the caller to handle this exception.

Closes #8207
Term Vectors: removed Nullable annotation on a primitive type
ParseField: Support for when all fields are deprecated

Closes #8067
Bulk indexing: Fix 8125 hanged request when auto create index is off.
If a bulk request contains a mix of indexing requests for an existing index and one that needs to be auto-created but a cluster configuration prevents the auto-create of the new index the ingest process hangs. The exception for the failure to create an index was not caught or reported back properly. Added a Junit test to recreate the issue and the associated fix is in TransportBulkAction.

Closes #8125
Docs: fixed typo in documentation

Closes #8205
Docs: rolling upgrade process seems incorrect

When reading the [rolling upgrade process](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-upgrade.html#rolling-upgrades), you can see that we wrote:

* disable allocation
* upgrade node1
* upgrade node2
* upgrade node3
* ...
* enable allocation

That won't work as after a node has been removed and restarted, no shard will be allocated anymore.
So closing node2 and remaining nodes, won't help to serve index and search request anymore.

We should write:

* disable allocation
* upgrade node1
* enable allocation
* wait for shards being recovered on node1
* disable allocation
* upgrade node2
* enable allocation
* wait for shards being recovered on node2
* disable allocation
* upgrade node3
* enable allocation
* wait for shards being recovered on node3
* disable allocation
* ...
* enable allocation

I think this documentation update should go in 1.3, 1.4, 1.x and master branches.

Closes #8218
Closes #7973.
Testing: Added utility class to find free port

The current netty tests heavily rely on finding a free port to bind to.

In order to simplify this, the first step is to bind only on so-called
ephemeral ports, which are considered to be high and short lived. This also
prevents binding on the heavily used 9xxx port range on testing systems.

The second step is to add a SocketUtil class, which returns a currently
unused port by trying to bind and unbind to it. This class check randomly
one of the ephemeral ports and also allows to return several ports at once.
Decoupled port binding from configuration
Incorporated review comments

Retry test if port binding fails for a certain number of times before really failing