Allow Date Fields to have a locale for date parsing

Currently if somebody uses a date format that is locale dependend
date fields can only parse a single format depending on the nodes
host locale. This can cause lots of problems since nodes might have
different locales. ie. "E, d MMM yyyy HH:mm:ss Z" where you have
"Wed, 06 Dec 2000 02:55:00 -0800" for en_EN while
"Mi, 06 Dez 2000 02:55:00 -0800" for de_DE.

Closes #3047
Integrate forbiddenAPI checks into Maven build.

This commit integrates the forbiddenAPI checks that checks
Java byte code against a list of "forbidden" API signatures.
The commit also contains the fixes of the current source code
that didn't pass the default API checks.

See https://code.google.com/p/forbidden-apis/ for details.

Closes #3059
multi get semantics of empty/null fields missing
the semantics between null fields (asking for source), and empty fields (not asking for anything) is missing
also exposes the items in the request, relates to #3061
External terms doesn't work with _id field
fixes #3063
rollback multi get fields change
seems like it still fails while serializing with sporadic failures in the tests (due to routing on serialization), need to test it in a consistent manner
Fix method name typo & beef up tests

s/DateFieldMapper#parseLocal/DateFieldMapper#parseLocal/
SimpleDateMappingTests Tests now also check local dependent
patters with root locale.
Apply QueryParser boost to top leve query if applicable.

Set the query boost of a parsed query string query to the product of
the parsed query boost and the boost value specified in the "boost"
query string parameter. This only applies if the top level query returned
from the query parser has a boost assigned to it. In such a case we must
multiply the boost with the top level query boost otherwise the boost
will be overwritten ie. 'foo^2' has a top-level boost of 2 while
'foo^2 OR bar^3' has a top level boost of 1.0 (default) since the
boolean query is the top level query.

Closes #3024
Changed common terms query to also support camelCased parameters
and renamed disable_coords to disable_coord, to be consistent with
the bool query

Closes #3074
Fix bug in DateFieldMapper where format is serialized instead of locale

This fix adds a default serialization step in the SimpleDateMappingTests
that parses the mapping, builds the mapper, serializes the mapper and
rebuilds the actual mapper from the serialization result. The contained
information must be equivalent to the original mapping.

The fixed bug has no issue assigned to is since the code is unreleased yet.
Added three new index alias related apis.

Added apis to get specific index aliases based on filtering by alias name and index name:
```
curl -XGET 'localhost:9200/{index_or_alias}/_alias/{alias_name}'
```

Added delete index alias api for deleting a single index alias:
```
curl -XDELETE 'localhost:9200/{index}/_alias/{alias_name}'
```

Added create index alias api for adding a single index alias:
```
curl -XPUT 'localhost:9200/{index}/_alias/{alias_name}'

curl -XPUT 'localhost:9200/{index}/_alias/{alias_name}' -d '{
	"routing" : {routing},
	"filter" : {filter}
}'

```

Closes #3075 #3076 #3077
Fix String.format to use Locale.ROOT
Added testcase to ensure #3078 doesn't fail
wait for green/yellow status
Never throw an IAE if the IndexMapper isn't present in PostingsFormat

If we throw an exception in the PostingsFormat during a merge we essentially
fail the entire merge which can lead to a corrupt index. We should rather
return the default postings format for the new segment and log a warning.

Closes #3088
Fixing percolation of documents with TTL set

When a type is configured with a TTL, percolation of documents of this type
was not possible. This fix ignores the TTL for percolation instead of
throwing an exception that the document is already expired.

Closes #2975
Stabilized SimplePercolaterTests
Dates accessed from scripts should use UTC timezone
this was broken in the field data refactoring we did in 0.90, fixes #3091
Added indices aliases exists api.

Added indices aliases exists api that allows to check to existence of an index alias. This api redirects to the master to check for the existence of one or multiple index aliases.

Possible options:
* `index` - The index name to check index aliases for. Partially names are supported via wildcards, also multiple index names can be specified separated with a comma. Also the alias name for an index can be used.
* `alias` - The name of alias to check the existence for. Like the index option, this option supports wildcards and the option the specify multiple alias names separated by a comma. This is a required option.
* `ignore_indices` - What to do is an specified index name doesn't exist. If set to `missing` then those indices are ignored.

The rest head endpoint is: `/{index}/_alias/{alias}`

Examples:
Check existence for any aliases with the name 2013 in any index:
```
curl -XHEAD 'localhost:9200/_alias/2013
```
Check existence for any aliases that start with 2013_01 in any index
```
curl -XHEAD 'localhost:9200/_alias/2013_01*
```
Check existence for any aliases in the users index.
```
curl -XHEAD 'localhost:9200/users/_alias/*
```

Closes #3100
Make suggester implementation pluggable

This patch tries to make the suggester implementation as pluggable as
facets or highlight implementations. The goal is to be able to create
own suggest implementations in a suggest query.

Closes #3089