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
[ENGINE] Remove engine related command classes

Todaqy we pass structs to the engine to call optimize / refresh and flush.
This commit cleans up this logic to reduce complexity in the engine.

Conflicts:
	src/main/java/org/elasticsearch/action/admin/indices/flush/ShardFlushRequest.java
	src/main/java/org/elasticsearch/action/admin/indices/optimize/ShardOptimizeRequest.java
	src/main/java/org/elasticsearch/index/shard/service/InternalIndexShard.java
	src/test/java/org/elasticsearch/index/engine/internal/InternalEngineTests.java
[SCRIPT] ScriptService can deadlock entire nodes if script index is recovering

we currently have operationThreaded set to false when indexing a script. This setting
means that if we are executing the operation locally that we don't spawn a new thread for
it althought incoming thread in this case is the network thread. Now sicne we are indexing here
the engine is currently recovering which sometimes locks the engine for finalization blocks on
a network call waiting for the recovery target to come back the internal lock in engine will never be
released since we are waiting with our network thread for it to be released.
Packaging: Add java7/8 java-package paths to debian init script

If you use the java-package tool to create java packages, those
paths also should be added to the debian init script.

Also updated the docs, that it is ok to install java8.

Closes #7383
Remove some Internal* abstractions

We have lots of boilerplate code that is unnecessarily abstracting
services ie InternalIndexShard and IndexShard or InternalIndexService and
IndexService. It's enough to have concrete classes for these core classes.

Closes #8904

Conflicts:
	src/main/java/org/elasticsearch/action/deletebyquery/TransportShardDeleteByQueryAction.java
	src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java
	src/main/java/org/elasticsearch/index/IndexService.java
	src/main/java/org/elasticsearch/index/gateway/IndexShardGatewayService.java
	src/main/java/org/elasticsearch/index/gateway/local/LocalIndexShardGateway.java
	src/main/java/org/elasticsearch/index/percolator/PercolatorQueriesRegistry.java
	src/main/java/org/elasticsearch/index/service/IndexService.java
	src/main/java/org/elasticsearch/index/shard/IndexShard.java
	src/main/java/org/elasticsearch/index/shard/service/IndexShard.java
	src/main/java/org/elasticsearch/index/termvectors/ShardTermVectorService.java
	src/main/java/org/elasticsearch/indices/InternalIndicesService.java
	src/test/java/org/elasticsearch/common/lucene/docset/DocIdSetsTests.java
	src/test/java/org/elasticsearch/index/fielddata/AbstractFieldDataTests.java
	src/test/java/org/elasticsearch/index/mapper/string/SimpleStringMappingTests.java
	src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java
	src/test/java/org/elasticsearch/test/InternalTestCluster.java
Revert "Remove some Internal* abstractions"

This reverts commit 479a57613459f568a00161c5f0002829c2f8a082.
Does not compile
Revert "Revert "Remove some Internal* abstractions""

This reverts commit b2530e89fcef841a92f77147c0b2f4ccc5d56715.
Fix compile errors in NoneIndexShardGateway