Fixed, that models with custom `as_indexed_json` method are properly serialized during update

Previously, the `update_document` method simply intercepted the changes to the model, via the
`@__changed_attributes` variable, and used these directly.

This caused models with a custom serialization method to be incorrectly serialized, namely
unwanted attributes were added.

This patch looks for `as_indexed_json` defined on the model, and when it finds it,
filters the changed attributes through the keys.

Closes #75

Related:

* #59
* #57
* #52
* #40
* #37
* #5
[TEST] Added an integration test for combining pagination with scopes

See: http://guides.rubyonrails.org/active_record_querying.html#scopes

Related: #16
Fixed the incorrect behaviour of limit() and page() methods

Previously:

  When klass.default_per_page is 25,

  response.limit(35).page(3)
  => :size is back to 25, :from is 25 * 2

  response.page(3).limit(35)
  => :size is 35, but :from is 25 * 2

After this patch:

  response.limit(35).page(3)
  => :size is 35, :from is 35 * 2

  response.page(3).limit(35)
  => :size is 35, :from is 35 * 2

Closes #42

Related: #72, #55
Changed, that the default `limit_value` for pagination is based on `default_per_page`

Closes #68
Removed the extraction of `from` and `size` from request body in Kaminari methods

Closes #16
Added CHANGELOG files
Release 0.1.1
[MODEL] Delegate `Hashie::Mash` query/existence methods to @result._source

Closes: #64
[MODEL] Minor improvements and retouches to the query methods (`result.foo?`) implementation and tests

Closes ##70

Related: #41, #64
[STORE] Added the blank skeleton of the "elasticsearch-persistence" gem
[STORE] Added the Persistence::Repository module and client integration
[STORE] Added the default `Repository::Class` for convenience

Instead of:

    class MyRepository
      include Elasticsearch::Persistence::Repository
    end

    repository = MyRepository.new

you can do:

    repository = Elasticsearch::Persistence::Repository.new

The module function `new` returns an Elasticsearch::Persistence::Repository::Class instance.
[STORE] Added the `Naming` module

Provides getting Ruby class from Elasticsearch type and vice versa,
ID from the document (Hash), as well as setting the `klass`
for the whole Repository instance.
[STORE] Added the `Serialize` module

The repository uses two symmetric methods: `serialize` and `deserialize`
to convert documents when:

1. passing them to the storage,
2. initializing Ruby objects when retrieving documents from storage

Every repository can easily customize (overload) these methods,
to provide (de)serialization for complex use-cases, such as storing
PDF files or images in the storage.

See:

* https://www.braintreepayments.com/braintrust/untangle-domain-and-persistence-logic-with-curator
* https://github.com/braintree/curator/blob/master/lib/curator/repository.rb
[STORE] Added the `Store` module

The `Store` module saves and deletes the documents in Elasticsearch
via the `save` and `delete` methods.
[STORE] Added the `Find` module

The module provides method to find one or multiple documents and to
check for documents existence.

The methods return `deserialize`-d Ruby objects based on `klass` or
the document Elasticsearch `_type`.

Missing documents are kept in the resulting Array as `nil` objects.
[STORE] Added the `Search` module

The module provides an interface for getting objects from the repository
based on a search query.

The results are wrapped in the `Response::Results` instance, which
proxies methods to the `results` property.
[STORE] Added the DSL variant of `klass` setter method

So:

    reposistory.klass = Foobar

is equivalent to:

    repository.klass Foobar
[STORE] Added the methods from the "elasticsearch-model" gem

Included `Elasticsearch::Model::Indexing::ClassMethods` to support setting the index name and document type,
and to allow configuring the mappings and settings for the index.

See:

https://github.com/elasticsearch/elasticsearch-rails/blob/6f4a57a/elasticsearch-model/lib/elasticsearch/model/indexing.rb
[STORE] Refactored the `:index` paramter to use repository `index_name`