Added support for PatternReplaceCharFilter

PatternReplaceCharFilter allows the use of a regex to manipulate the characters in a string before analysis

Closes #3197
Put Eclipse settings in the root directory.

This enforces that settings are taken into account whichever mean is used to
import the project into Eclipse (manual import, m2e, mvn eclipse:eclipse, ...).
Fix field number attribution to _version.

IndexUpgraderMergePolicy assumed that field numbers were dense and that
fieldInfos.size() was a free field number. This can however be wrong for a
segment which doesn't have one or more fields that some older segments have.

Close #3237
PluginManager fails with unknown command when passing url or verbose parameters
Closes #3245.
Merge integer field data implementations.

This commit merges field data implementations for byte, short, int and long
data into PackedArrayAtomicFieldData which uses Lucene's PackedInts API to
store data.

Close #3220
NPE in PluginManager when asking for list on non existing dir
Asking for list of installed plugins with no existing plugin dir:

```sh
$ bin/plugin --list
```

It causes a NPE in PluginManager.
Closes #3253.
add running the tests in headless mode in maven
Make index.warmer.enabled setting dynamic

Even though proposed in the documentation, the realtime enabling/disabling of
index warmers was not supported. This commit adds support for
index.warmer.enabled as a dynamic setting.

Closes #3246
Dont execute suggest before parsing the full request

The current implementation of parsing suggestions executed inside of the
the pull parser - which resulted in being reliable of the order of the
elements in the request. This fix changes the behaviour to parse the
relevant parts of the request first and then execute all the suggestions
afterwards, so we can be sure that every information has been extracted
from the request before execution.

Closes #3247
Moving forbidden-api checks to compile phase instead of test phase (fail fast)
Updated elasticsearch.yml file for recovery throttling
Fixes the issue that the `parent` option was ignored for delete requests.

The `parent` option was ignored in the delete api (rest only) and for delete actions in the bulk api.
This bug occurred in the case that the _parent field is enabled, and only the parent option was used. This resulted in a situation that documents are deleted even if the specified parent value is incorrect.

Closes #3257
Fix misspelling.
Ignore live docs when loading field data, the ID cache and filter caches.

Relying on deleted documents when loading field data is dangerous because a
field data instance might be loaded for a given generation of a segment and
then loaded from the cache by an older generation of the same segment which
has fewer deleted documents. This could, for example, lead to under-estimated
facet counts. The same issue applies to the ID cache and filter caches.

Close #3224
Fixes issue that in some cases the doc_as_upsert option is ignored.
Closes #3265
Changes validation error message
Clean up update tests
Stop aborting of multiget requests in case of missing index

The MultiGet API stops with a IndexMissingException, if only one of all
requests tries to access a non existing index. This patch creates a
failure for this item without failing the whole request.

Closes #3267
Supports mget fields parameter given as string.

Closes 3270
Parent was ignored in exists request

The routing was always set to null right after the parent was set.

Closes #3276