Big WagtailSearch refactor
Firstly, apologies for the giant commit

This commit contains the following changes:
 - Removed document building code from Indexed class
 - Added ElasticSearchType and ElasticSearchDocument classes to ElasticSearch backend. These help with document building
 - Filtered fields are now suffixed with '_val'. This prevents name clashes when the field is also in searchable fields
 - Queries now cast their parameters to strings before sending them to ES
 - ElasticSearchQuery now removes redundent 'and' and 'or' filters from ES query (before it added them even when they only had one child filter)
 - ElasticSearchResults len() now returns length of actual results set instead of returning the value of .count()
 - A couple more unit test cases