DATAMONGO-1008 - Added repository type based checks to strict matching algorithm.

Repositories extending MongoRepository are now considered strict matches as well.

Related ticket: DATACMNS-526.
DATAMONGO-1008 - DefaultIndexOperations no considers 2dsphere, too.

We now also check for 2dsphere when inspecting index keys and create an geo IndexField in that case.

Original pull request: #210.
DATAMONGO-1008 - Polishing.

Slightly changed the implementation of the 2dsphere check, Minor refactorings in the test case.

Original pull request: #210.
DATAMONGO-973 - Add support for deriving fulltext queries.

Prepare issue branch.
DATAMONGO-973 - Add support for deriving fulltext queries.

inital commit - just to get an idea of what can be done…

Open Questions:
- Should it be possible to add more than one full text param by adding more than one param to the method signature or use a collecion
- How is the queries language set? use @Language on methods parameter.
DATAMONGO-973 - Add support for deriving fulltext queries.

TextCriteria should implement CriteriaDefinition instead of extending Critieria. Therefore we’ve moved getKey to CriteriaDefinition and altered Query to accept it. For retaining binary compatibility we’ve kept methods accepting Criteria and delegated those to use the CriteriaDefinition ones. 

Along the way we’ve simplified joining terms using Converter and StringUtils.collectionToDeliminatedString.
DATAMONGO-973 - Add support for deriving fulltext queries.

Instead of using an annotation based approach we move to a more explicit checking for the existence of TextCriteria. Once discovered we create the according TextQuery.

Remaining tasks:
* findAllBy(Text criteria)
* Integration tests
* Update Reference documentation
DATAMONGO-973 - Add support for deriving fulltext queries.

We’ve introduced text query specific methods for MongoRepository that allow direct usage of TextCriteria.

Retrieving document score and sorting by score is only possible if the entity holds a property annotated with @TextScore. If present, any find execution will be enriched so that it asserts loading of the according { $meta : textScore } field. The sort object will only be mapped in case the existing sort property already exists - in that case we replace the existing expression for the property with its $meta representation.

This allows for example the following:

TextCriteria crit = TextCriteria.forDefaultLanguage().matching(“term”);
* findAllBy(crit, new Sort(“score”))
* findBy(crit, new PageRequest(0, 10, Direction.DESC, “score”))
* findByFooOrderByScoreDesc(“foo”, crit)

Remaining tasks:
* Update Reference documentation