feed es view (bug 1036216)

Breaking https://github.com/mozilla/zamboni/pull/2298 up.

- Do a filter on FeedItem by region that puts matching region/carrier operator shelves on top.
- Do an OR query for FeedApp/Brand/Collection/Shelf using IDs
- Do an OR query for apps using IDs

Relies on [indexers](https://github.com/mozilla/zamboni/pull/2314) and [serializers](https://github.com/mozilla/zamboni/pull/2313).
E.g something like this?
```
def get_es_feed_query(self, region=mkt.regions.RESTOFWORLD.id, carrier=None):
    filter = es.filter.Bool(must=[es_filter.Term(region=region)])

    # Filter only by region.
    if region and not carrier:
        return filter

    # Filter by both region and carrier.
    shelf_filter = es_filter.Term(item_type=feed.FEED_TYPE_SHELF)

    # Boost shelf to top.
    functions = [es_function.BoostFactor(value=10000.0,
                                         filter=shelf_filter)]
    # Exclude shelves that may match the region, but NOT the carrier.
    bad_shelf_filter = es_filter.Bool(
        must=[shelf_filter],
        must_not=[es_filter.Term(carrier=carrier)])

    filter += es_filter.Bool(must_not=[bad_shelf_filter])

    return query.FunctionScore(functions=functions, filter=filter)
```