jenkin hookup modification

1) add build_desc property variable
2) use build_id plus build_number as an unique file name
3) tools subdirectory should be under current PWD when the script is
executing
NPE in PluginsService when starting elasticsearch with a wrong user
When starting elasticsearch with a wrong linux user, it could generate a `NullPointerException` when `PluginsService` tries to list available plugins in `./plugins` dir.

To reproduce:

* create a plugins directory with `rwx` rights for root user only
* launch elasticsearch from another account (elasticsearch for example)

Related discussion: https://groups.google.com/forum/#!topic/elasticsearch/_WRW4Qfpo7M

Closes #4186.
Closes #4187.
Removed redundant masterNodeTimeout, already present in the ClusterStateUpdateRequest base class
Refactored open/close index api to make use of the new recently introduced generic ack mechanism

Closes #4169
Added base ClusterStateUpdateRequest class that executes on multiple indices
Added readTimeout, writeTimeout, readAcknowledged and writeAcknowledged methods variation without version as parameter, to be used by api that always read and write those parameters. Helps avoiding to call the variation that accepts a Version with actual version null.
Refactoring IndicesAnalysisService

Using enums where possible in order to clean up the code in IndicesAnalysisService

Also introduced a simpler generic caching mechanism, and tests.
Use #assertAcked() for verification.
Fix typo in MockRamDirectoryService name
Prevent modification or deletion of repositories while snapshots are running