Added support for the `custom_filters_score` query

Closes #734
[#734] Added DSL versions for `custom_filters_score` and restructured the source code

Allow the DSL version of filters definition:

    s = Tire.search('articles-test') do
      query do
        custom_filters_score do
          query { all }

          # Give documents over 300 words a score of 3
          filter do
            filter :range, words: { gt: 300 }
            boost 3
          end
        end
      end
    end

Related: #734