Search Changes 3 - New field configuration format

This adds a new configuration format to wagtailsearch. Previously, users had to use the Elasticsearch mapping DSL inside python dictionaries.

In the new format, users have to provide a list of SearchField/FilterField objects in the ```search_fields``` attribute:

```python
class MyClass(models.Model, indexed.Indexed):
    title = models.CharField(max_length=255)
    live = models.BooleanField()

    search_fields = [
        indexed.SearchField('title', partial_match=True, boost=10),
        indexed.FilterField('live'),
    ]
```

Each field can have a maximum of one SearchField and one FilterField defined for them. If a field has more than one of any of these, the last one in the list is used. This allows child classes to override configuration of parent classes.

You now have to explicity ask it to inherit search_fields from a parent class.

```python
class MyChildClass(MyClass):
    content = models.TextField(max_length=255)

    search_fields = MyClass.search_fields + [
        indexed.SearchField('title'), # Disables partial matching and boosting on title
        indexed.SearchField('content'),
    ]
```

The main advantages of the new format are:
 - Easier to read/write
 - More control over inheritance
 - Simpler implementation
 - Backend agnostic

This temporarily converts the new configuration format back into the old one for the backends. In a later PR (#346), the backends will be changed to use the new SearchField/FilterField classes.