Internal: allow InternalEngine to be stopped and started

Once the current engine is started you can only close it once. Once closed the engine cannot be started again. This commit adds a stop method which signals the engine to free it's resources but in a way that allows restarting.

This is done by introducing InternalEngineHolder which is a wrapper around InternalEngine. This allows to add the stop() method without adding complexity the engine implementation. InternalEngineHolder also serves an entry point for listeners (incoming and outgoing) to other ES components, which removes the needs add/remove them if the engine is stopped.

Closes #8784
[ENGINE] Add engine lifecycle store reference to EngineHolder

This commit add the engines reference to the store out of the actual
implementation into the hodler since the holder manages the actual lifcycle.
Engine internal references like per searcher or per recovery are kept inside
the actual implemenation since the have a different lifecycle.
[TEST] Beef up InternalEngineTest and remove bogus timeouts
Docs: Update repositories.asciidoc

1. Enable the repository using "add-apt-repository" to avoid this error "No command 'deb' found".
2. Adding "sudo" to update and install command.

Closes #8691
Docs: Fix the wording for inner hits a bit

Closes #8747
[TEST] LoggingListener to restore the initial logger levels after any modification

Modifications to LoggingListener pushed with #8820 caused the original logger levels not to be reset after modifications, as the new state was saved for restore instead of the previous one.

 Added unit tests for LoggingListener as well.

Closes #8845
[TEST] Restore test logging level after test is done
Core: also log byte size and doc count when we log slow merges

Closes #8855

Closes #8853
Add more trace logging to gateway translog recovery
Test: fix this test to work in IntelliJ
Core: put []'s around the values in the slow-merge log message
[TEST] Use private store for a test private engine

The test was using the same store as the suite level engine which caused
problems with write locks in some cases.

Closes #8880
[TEST] wait for yellow to avoid searching while relocating

After upgrading shard might start relocating again. If there are no
replicas the cluster state of a node might not be up to data for
a few miliseconds and direct a search request to a node that does not
have the shard anymore. This result in the following test failures:

1> java.lang.AssertionError: Count is 99 but 101 was expected.  Total shards: 13 Successful shards: 12 & 0 shard failures:
1>     __randomizedtesting.SeedInfo.seed([1932F73B458703CA:6F4FAD3DAC55591C]:0)
1>     [...org.junit.*]
1>     org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount(ElasticsearchAssertions.java:184)
1>     org.elasticsearch.bwcompat.BasicBackwardsCompatibilityTest.testIndexRollingUpgrade(BasicBackwardsCompatibilityTest.java:358)

Waiting for relocation finished should fix this.
Docs: use https to download the gpg public key

Closes #8818
[TEST] Reset test logger to default level
[ENGINE] Fix updates dynamic settings in InternalEngineHolder

After the refactoring in #8784 some settings didn't get passed to the
actual engine and there exists a race if the settings are updated while
the engine is started such that the actual starting engine doesn't see
the latest settings. This commit fixes the concurrency issue as well as
adds tests to ensure the settings are reflected.

Conflicts:
	src/main/java/org/elasticsearch/index/engine/internal/InternalEngine.java
	src/main/java/org/elasticsearch/index/engine/internal/InternalEngineHolder.java
	src/test/java/org/elasticsearch/index/engine/internal/InternalEngineTests.java
[GEO] Fix for NPE enclosed in SearchParseException for a "geo_shape" filter or query

This fix adds better error handling for parsing multipoint, linestring, and polygon GeoJSONs.  Current logic throws a NPE when parsing a multipoint, linestring, or polygon that does not comply with the GeoJSON specification. That is, if a user provides a single coordinate instead of an array of coordinates, or array of linestrings, the ShapeParser throws a NPE wrapped in a SearchParseException instead of a more useful error message.

Closes #8432
Core: don't forcefully release IndexWriter lock on engine start

It's dangerous to release this lock because it means another ES
somehow still has an IndexWriter open on the directory, which can
lead to corruption.

Instead, we don't release the lock, and the user will see an exception
on init.

This was already fixed on master with #8588; I'm backporting to 1.x
here.

Closes #8892
Mappings: Fix Get field mapping api with pretty flag

Closes #6552
HTTP: Add 'http.publish_port' setting to the HTTP module

This change adds a 'http.publish_port' setting to the HTTP module to configure
the port which HTTP clients should use when communicating with the node. This
is useful when running on a bridged network interface or when running behind
a proxy or firewall.

Closes #8807
Closes #8137