Search changes

This pull request adds the following changes:

 - Scrapped ElasticUtils/pyelasticsearch. Wagtailsearch now uses elasticsearch-py
 - Tests are no longer run with wagtailsearch signal handlers enabled
 - add_bulk is now a generator (so we can provide feedback during the bulk add process)
 - Indexed class refactor
 - Queries now run on QuerySets rather than models. This allows more complex filters to be run.
 - Refactored ElasticSearch backend. (better ElasticSearchResults class, more unit testable, indexes fields with correct type, partial_match fields are indexed separately from other fields).
 - Changed configuration format

TODO (for this PR):
 - [x] Unit tests
 - [x] Python 2.6 support
 - [x] Refactor/cleanup
 - [x] Testing

TODO (for future PR):
 - Remove wagtailcore specific code from search view
 - Split editors picks into own module (Done: #223)

Example of searching on a queryset (using PageQuerySet #185):

    events.get_descendants().not_descendant_of(past_events).live().search("Hello world!")

This will search all live pages that are in the events section but exclude pages which are in the past_events sub section.
Thank you very much!

I do like the indexing definitions better in the panel definition format, mostly so that model properties and custom methods are the only things in the model class definition (the indented part, anyway). That way it's easier to see what code is custom to the model and what's Wagtail configuration. It also feels a bit more "welcoming" as an explicit interface rather than toying with an internal setting, as it felt to me at first when I didn't understand the ES-related properties.