[MODEL] Added support for `will_paginate` pagination library

This patch adds support for the [`will_paginate`](https://github.com/mislav/will_paginate) gem,
functionally equivalent to the Kaminari integration.

Closes #49
[MODEL] Added the ability to transform models during indexing

For instance, to add the `_parent` field to indexed documents:

    transform = lambda do |a|
      { index: {_id: a.id, _parent: a.author_id, data: a.__elasticsearch__.as_indexed_json} }
    end

    Article.import transform: transform

Closes #113
[MODEL] Minor changes and tweaks to the `transform` feature for import

Related: c4b42b5, #113
[MODEL] Add `type` and `id` methods to Response::Result to prevent errors with Hashie::Mash

Since Hashie::Mash explicitely [defines](https://github.com/intridea/hashie/blob/953edec/lib/hashie/mash.rb#L75-L81)
`id` and `type` methods, the method_missing couldn't kick in.

The `id` and `type` attributes should be referenced from the attributes hash directly,
ie. from the main `_id` and `_type` properties, and not from `_source`.

Closes #90
[MODEL] Fixes for the change id/type for Response::Result in #90

* Removed the code which returned id based on _source in `method_missing`
* Reorganized and renamed some tests
* Added a test for demonstrating difference between `result.type` and `result._source.type` (same with `id`)

Related: #90
Release 0.1.2
Added Ruby version requirement to gemfiles (>= 1.9.3)
[MODEL] Fixed the incorrect protection for existing model methods (such as `search`)

Due to the different scope in the `class << self`, the `respond_to?` condition always returned false,
even when the model had in fact defined the method in question (such as `search`).

Instead of using `respond_to?`, `self.public_instance_methods.include?` has been used.

The concrete example is eg. [Ransack's](https://github.com/activerecord-hackery/ransack) `search` method.

Closes #96
[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`
[STORE] Changed that `document_type` method returns `nil` when no `klass` is set