Elastica\Result should have hasFields() method

To make it consistent with Elastica\Document
Add missing hasParam() method

However in the long run it might make more sense to extend Param class
Added tests for hasFields()
Fix failing test in ResultTest
Fix returning of suggestion results in \Elastica\ResultSet
Send scroll_id via HTTP body instead of as query param

Elasticsearch scrolling queries can accept `scroll_id` either as a query
parameter or as the raw HTTP body. The Elastica should always pass the id
via HTTP body for safety.

The Elasticsearch `scroll_id` is a base64 encoded value that appears to be
a serialized string that contains key/value pair data for each shard in
the cluster. As the number of shards grow the size of `scroll_id`
increases proportionally. In addition by default Elasticsearch caps URLs
at 4kb as governed by the `http.max_initial_line_length` setting.

Thus as the size of a cluster grows at some point all scrolling queries
will fail if passed via the query parameter.

Conflicts:
	changes.txt
Add tests for sending scroll_id via HTTP body

We are only testing that `scroll_id` will be sent via HTTP body instead of
via query param. (See thread in #518)
Fix TypeTest by running optimize after creating new type to make sure it exists
Add support for filter inside HasChild filter
Add support for filter inside HasParent filter
Replace switch/case with if/else statement
Add Search test for Query and Filter inside HasChild filter
Add Search test for Query and Filter inside HasParent filter
Merge remote-tracking branch 'upstream/master'

Conflicts:
	changes.txt
Add analyze function to index to use _analyze api
changes
only return tokens array
Merge remote-tracking branch 'upstream/master' into analyze-api

Conflicts:
	changes.txt
Refresh the index before analyzing, maybe fixes the travis build
Sleep instead of refresh to make sure it always works