Fix TemplateQueryParser swallows additional parameters

Request parameters such as "size" and "fields" were ignored when
placed after the template query in the reqest.

closes #5933
Throw exception if an additional field was placed inside the "query" body

Currently the parser accepts queries like

```
"query" : {
     "any_query": {
         ...
     },
     "any_field_name":...
}
```

The "any_field_name" is silently ignored. However, this also causes the parser
not to move to the next closing bracket which in turn can lead to additional query
paremters being ignored such as "fields", "highlight",...
This was the case in issue #4895

closes issue #4895
[TEST] Expect all shards failed in SearchWithRandomExceptionsTests
[TEST] Prevent deletion of the second document by using different ids
temporarily mute this test on Java 8 until we fix getFiniteStrings
Make Create/Update/Delete classes less mutable

Today we use a builder pattern / setters to set relevant information
to Engine#Delete|Create|Index. Yet almost all the values are required
but they are not passed via ctor arguments but via an error prone builder
pattern. If we add a required argument we should see compile errors on that
level to make sure we don't miss any place to set them.

Prerequisite for #5917
[TEST] Logger names differ based on the classpath, inside the IDE the package name is used as a prefix