[TEST] Added ability to skip REST test suite/sections based on their required features

As we have different runners for the REST tests we need a mechanism that allows us to add features to any of them without breaking all others builds.
The idea is to name a feature and temporarily use skip sections that mention the required new features, so that runners that don't support it will skip the test.

Added support for `features` field in skip section.
Added `Features` class that contains a static list of the features supported by the runner. If a feature mentioned in a skip section is not listed here, the test will be skipped.
[TEST] clarified skip features usage
Don't load CompetionTerms if lookupFactory is null

Closes #4970
Closes #4788
Prevent usage of object based RamUsageEstimator in Completion090PostingsFormat
Add RamUsageEstimator#sizeOf(Object) to forbidden APIs

This method can be a performance trap since it traverse the
entire object tree that is referenced by the provided object.
See LUCENE-5373
Add explanations for all AllocationDeciders

Relates to #4380
Relates to #2483

Conflicts:
	src/main/java/org/elasticsearch/cluster/routing/allocation/AllocationService.java
	src/main/java/org/elasticsearch/cluster/routing/allocation/decider/EnableAllocationDecider.java
	src/main/java/org/elasticsearch/cluster/routing/allocation/decider/SameShardAllocationDecider.java
	src/main/java/org/elasticsearch/cluster/routing/allocation/decider/SnapshotInProgressAllocationDecider.java
Parent / child queries should work with non-default similarities
[TEST] Added check that yaml REST test suites always end with \n

Our yaml parser seems to be too tolerant in some cases, e.g. it properly parses yaml suites when they don't end with a line feed, whereas other clients tests break due to that. We should try to do the same to keep consistency across runners.
[TEST] Added ability to test apis that don't return json

The last response body gets now always stashed in the REST tests and can be retrieved via `$body`. This implies that not only expected values can be retrieved from the stashed values, but actual values as well.

Added support for regular expressions to `match` assertion, using `Pattern.COMMENTS` flag for better readability through new custom hamcrest matcher (adopted in do section as well). Functionality added through new feature called `regex` that needs to be mentioned in the skip sections whenever needed till all the runners support it.

Added also example tests for cat count api
Remove accidentially added CAT API tests - this API doesn't exist on 0.90
Added exception if passed an invalid type param
Closes #4964
Added tests for match/multimatch queries with invalid “type” JSON param
release [0.90.11]
[TEST] added ability to filter REST test sections to run

Added `tests.rest.section` parameter that allows to filter the test sections that get executed via regex (case insensitive)