DATAMONGO-899, DATAMONGO-909, DATAMONGO-827 - Overhaul index creation.


Index creation did not consider the properties path when creating the index. This lead to broken index creation when nesting entities that might require index structures.

Off now index creation traverses the entities property path for all top level entities (namely those holding the `@Document` annotation) and creates the index using the full property path.

This is a breaking change as having an entity to carry the `@Document` annotation has not been required by now.

---

We ensure that `@CompoundIndex` is properly looked up on both interfaces and super classes.

---

We introduced `useGeneratedName` (defaulted to false) on `@Indexed`, `@CompoundIndex` and `@GeoSpatialIndexed` to allow mongodb auto creating the index name.