This is not a blocker for integration, just a note for later refactoring:

I think it's better to split up into:
* Flask-ElasticSearch: Basically just ``class ElasticSearch``
* ``invenio.ext.elasticsearch``: Just the ``setup_app``
* ``invenio.modules.elasticsearch``: Everything else including connecting signals in the blueprint.before_app_first_request?

Alternatively, ``invenio.ext.elasticsearch`` should be added manually to ``app.extensions["registry"]["packages"]`` via the configuration:

```
PACKAGES = [
    'invenio.modules.*'
    'invenio.ext.elasticsearch'
]

EXTENSIONS = [
    # ...
    'invenio.ext.elasticsearch',
]
```