Update to Lucene 4.10.2

Closes #130
Tests: Fix randomizedtest fail

Closes #131
Fix constructors of ZenDiscovery's sub classes

Closes #133
upgrade to lucene 5 snapshot
Update S3BlobContainer because BlobContainer changed

See elasticsearch/elasticsearch#8366
Upgrade to Lucene 5.0.0-snapshot-1637347
Add retry logic for S3 connection errors when restoring snapshots

This commit adds a retry logic when reading blobs from S3. It also adds a retry logic when initializing a multipart upload and sets the internal "max retries" parameter of the Amazon S3 client with the same value as the "max_retry" parameter set for the snapshot repository (so in worst cases with the default value set to 3, 3x3=9 attempts will be made). The internal S3 client uses an exponential back off strategy between each connection exception (mainly IOException).

Closes elasticsearch/elasticsearch#8280
Add random read failures in unit tests to test the retry logic added to S3BlobContainer.openInput()
Use the new 'install' form when invoking bin/plugin

'-install' was deprecated in https://github.com/elasticsearch/elasticsearch/issues/3112,
and 'install' is the proper variant from https://github.com/elasticsearch/elasticsearch/pull/7339.
Merge branch 'master' into feature/per-repo-endpoint

Conflicts:
	src/main/java/org/elasticsearch/cloud/aws/AwsS3Service.java
	src/main/java/org/elasticsearch/cloud/aws/InternalAwsS3Service.java
	src/main/java/org/elasticsearch/repositories/s3/S3Repository.java