Added `Tire::Index.response` to check HTTP responses after index operations
[TASKS] Refactored the "tire:import" Rake task

* Simplified code, getting rid of needless variable
* Formatting
[TASKS] Added the "tire:index:drop" Rake task

    $ rake -D tire:index:drop

Delete indices passed in the INDEX environment variable; separate multiple indices by comma.

Pass name of a single index to drop in the INDEX environmnet variable:

    $ rake environment tire:index:drop INDEX=articles

Pass names of multiple indices to drop in the INDEX or INDICES environmnet variable:

    $ rake environment tire:index:drop INDICES=articles-2011-01,articles-2011-02

Closes #199.
Added "Filter Facets" support

    s = Tire.search('articles') do
      query { string 'T*' }

      filter :terms, tags: ['ruby']

      facet 'filtered-by-ruby-tag' do
        filter :tags, 'ruby'
      end
    end

    p s.results.facets
    # => {"filtered-by-ruby-tag"=>{"_type"=>"filter", "count"=>1}}

See <http://www.elasticsearch.org/guide/reference/api/search/facets/filter-facet.html>

Closes #285.
[#285] Cleaned up the "Filter Facets" support

* Moved around tests
* Added basic unit test
[#281] Fixed the problem with composite keys (such as highlight results) in `Results::Item`

    @document = Results::Item.new :highlight => { 'name.ngrams' => 'abc' }
    assert_not_nil @document.highlight['name.ngrams']

Reported in https://github.com/thedeeno/tire/commit/0bd1a675f679aacfb28c7dd118ab411f3949eb7b.

Closes #281.
[FIX] Assorted fixes for Ruby 1.8.7 compatibility
[ACTIVEMODEL] Added support for eager loading records of multiple types/classes

Closes #218.
[#218] Cleaned up the codebase for loading instances of multiple classes / single table inheritance

Previously, eagerly loading instances of multiple classes with the `load: true` option was not possible.

Now, you can use the `Tire.search` DSL for searching and loading multiple models from one or several indices:

    ActiveRecordModelOne.create :title => 'Title One', timestamp: Time.now.to_i

    s = Tire.search ['active_record_model_one', 'active_record_model_two'], :load => true do
                  query { string 'title' }
                  sort  { by :timestamp }
                end

    puts s.results[0].inspect
    # => <ActiveRecordModelOne id: 1, title: "Title One", timestamp: "1332437294">

Fixed indentation/formatting/whitespace throughout the suite :/

Fixes #80, fixes #178, fixes #218, fixes #277, closes #131.
[TEST] [FIX] Fix for the `search_type=count` integration test
[ACTIVEMODEL][FIX] URL escape document types for namespaced models

This is a combination of two commits:

a1775b3 ‣ [HTTP][FIX] Escape the document types in case they are namespaced. [2 months ago by Romain Gauthier]
7fec6e4 ‣ [ACTIVEMODEL][FIX] Fix the incorrect translation of namespaced models into `document_type` [3 months ago by Karel Minarik & Domizio Demichelis]
[UTILS] Added the `Tire::Utils` module
[ACTIVEMODEL] Fixed and cleaned up URL-escaping of document type

This commit builds on work done in 5151ff9.

It properly URL-encodes document types when storing/removing/retrieving documents in the index
and when executing searches.

It decodes the document types when building the results (`Results::Collection`).

It adds a number of unit and integration tests to check and document the behaviour.

It closes #201, closes #204, closes #264 and closes #271.
[TEST] Removed the "supermodel" gem and used the "redis-persistence" gem

The "supermodel" gem has dependency for activemodel ~> 3.0.0, making tests impossible to run without Bundler
and downright failing on eg. <http://travis-ci.org/karmi/tire>.

Used the "redis-persistence" gem [http://github.com/ataxo/redis-persistence] as a "generic" reference
ActiveModel implementation. We're interested only in testing "some real ActiveModel" model.

TODO: Research and use some "in-memory" ActiveModel gem, if available.
Added Ruby 1.8 compatibility for `Utils.escape/unescape`

1. Added the `rubyext/ruby_1_8` file for storing Ruby 1.8 compatibility patches.

2. Offloaded the `URI.decode_www_form_component` to Rack
   [https://github.com/rack/rack/blob/1.4.1/lib/rack/backports/uri/common_18.rb]

3. Use `String#force_encoding` only when defined
Restructured the test suite for Ruby 1.8 unit test compatibility

NOTE: Integration tests are Ruby 1.9 only.
[GEMS] Updated and cleaned up gem dependencies

* Relaxed dependencies on ActiveModel/ActiveRecord
* Updated Bundler to >= 1.0
* Updated MultiJson to ~> 1.1
* Updated Hashr to ~> 0.0.19
* Added "bson_ext", "minitest"
[#289] Added the "fuzzy" query type

See <http://www.elasticsearch.org/guide/reference/query-dsl/fuzzy-query.html>

This is a combination of 4 commits:

* initial implementation of fuzzy api
* just a bit improvement to the docs to make fuzzy example easier to read
* unit tests for fuzzy query
* integration test for fuzzy query
[#289] Improvements to the "term" query type

This is a combination of 3 commits:

* little improvement of term api
* fixing term tests after api changing
* unit tests for term query with an option hash
[#289] Cleaned up the code for "term" and "fuzzy" queries and restructured the search query test suite