Adding a generic repository for elastic search and providing extensibility points.

Next is to materialize this into Product functionality.