[REFACTORING] Removed mysterious `store_mapping` method and checks, removed `id` and `type` from serialized document

Accidentally closes #147.
[FIX] Fixed an error where Hash#select behaves a bit unexpectedly on Ruby 1.8
Release 0.3.12
[ACTIVEMODEL] Added support for property defaults in Tire::Model::Persistence

In the new implementation of the `property` method, you can define default values for your model attributes:

    class Article
      include Tire::Model::Persistence

      property :title
      property :tags, :default => []
    end

    Article.create title: 'Test'

    Article.all.first.title
    # => 'Test'

    Article.all.first.tags
    # => []
[REFACTORING] Extracted updating item/model instance attributes to dedicated method (`__update_attributes`)
[GEMS] Added Hashr (https://rubygems.org/gems/hashr) as dependency

Hashr allows to easily wrap Hashes in object-like manner:

    config = Hashr.new('foo' => { 'bar' => 'bar' })

    config.foo?     # => true
    config.foo      # => { :bar => 'bar' }

    config.foo.bar? # => true
    config.foo.bar  # => 'bar'

See <https://github.com/svenfuchs/hashr> for more info.
[ACTIVEMODEL] Added the support for casting model properties as Ruby objects

In Tire::Persistence, you define a model property to be casted
as a custom Ruby class instance.

Currently, the implementation expects your class to take a Hash of attributes
on initialization. (There are plans to support custom initialization logic.)

You can cast either single values (see `Author` in the example below),
or collections of values (see `[Comment]`). The behaviour was inspired
by the CouchRest-Model gem.

Also, all strings which conform to the UTC time format are automatically
converted to Time objects.

Also, all Hashes are automatically converted to Hashr [https://rubygems.org/gems/hashr]
instances, allowing easy "dot-style" access to nested hash properties.

Example:

    class Article
      include Tire::Model::Persistence

      validates_presence_of :title, :author

      property :title,        :analyzer => 'snowball'
      property :published_on, :type => 'date'
      property :tags,         :default => [], :analyzer => 'keyword'
      property :author,       :class => Author
      property :comments,     :class => [Comment]
    end

See the test suite for more information.
[DOC] README updates
[FIX][PERSISTENCE] Fixed an error where find by ids was not returning more than 10 results
[PERSISTENCE] Changed that search in persistence returns instances of model not Item
[FIX][PERSISTENCE] Fixed an error with 'false' as default
[FIX] Use currently set `Configuration.url` in `Search::Search#perform` and don't freeze it in initializer

Makes it easier to re-perform a failed search on another server, eg.:

    search = Tire::Search::Search.new('articles')
    # build search ...
    servers = ["http://localhost:9200", "http://localhost:9201"]
    begin
      Tire::Configuration.url servers[0]
      search.perform
    rescue Errno::ECONNREFUSED => e
      Tire::Configuration.url servers[1]
      search.perform
    end
    # do something with results ...

Closes #163.
[CURB][FIX] Fixed an error when GET requests with the Curb client didn't have body
[CURB][FIX] Changed resolve_mode to :ipv4 to avoid Curl::Err::HostResolutionError
[FIX] Fixed an error where facets did not respect the "blocks with arguments" DSL variant

Closes #176.
[HTTP][FIX] Re-raise the RestClient::RequestTimeout and RestClient::ServerBrokeConnection exceptions

These exceptions should be re-raised so the user can catch it and possibly try the search at another node, etc.

Closes #170, closes #171
[FIX] Index#retrieve returns nil when the document doesn't exist

Previously an exception was raised on document.update(h['fields'])
since h['field'] returned nil:

    index = Tire::Index.new("empty")
    index.create
    puts index.retrieve("doc", 'NOTEXIST').inspect

Closes #193.
[FIX] Fixed incorrect curl format in logger for Index#open

Closes #195.
[ACTIVEMODEL] Added the `:as` option for model mapping to dynamically set property value in serialization

Example:

    class Article
      belongs_to :author

      mapping do
        indexes :author, as: proc { author.name }
        indexes :author_email, as: 'author.email'
      end
    end

Ccloses #184, closes #186.
[ACTIVEMODEL] Added documentation and more tests for the `:as` option

Related: #184, #186.