Refactor the way to declare ES indices.

- BaseIndex has too many responsibilities
- SearchClient must not override TransportClient, else it can't be easily used in tests