ES feed indexers and search view, refactor indexing code to use a BaseIndexer

In an attempt to write a search view for the new Feed Curation Tool, things have gotten larger and into the scope of refactoring a lot of indexing code to not work with just apps.

The components of this patch to look at:

- [ ] **BaseIndexer**: defines common indexing methods such as ```get_analysis``` or ```setup_mapping```, or ```run_indexing```.
- [ ] **reindex_mkt**: now with zero webapp-specific code
- [ ] **Refactoring WebappIndexer code**: new standard to put indexing code in ```indexers.py``` (and ```test_indexers.py```), use the ```BaseIndexer```
- [ ] **Feed Indexers**: there are three of them, all inherit from ```BaseIndexer```
- [ ] **Feed Search Views**: search view that pulls from three indexes and serializes into one response
- [ ] **Guillotine**: remove AMO reindex flagging code
A fuzzy search is an odd choice to me. I usually think of it as a misspelling type of search and they don't work well if you search for something with multiple words like 'world cup', e.g.

I think a better search here would be a match phrase query:
```
   .query(name__match={'query': q, 'type': 'phrase'})
```
You can add a slop if you want.

If you choose to do not analyzed on the type, this can be a `type__term=q` query.