DATAMONGO-1001 - Fix saving lazy loaded object.

We now resolve the target type for CGLib-proxied objects and initialize lazy loaded ones before saving. As it turns out CustomConversions already knows how to deal with proxies correctly. Ee added an explicit test to assert that.

Original pull request: #208.
DATAMONGO-1001 - Renamed LazyLoadingProxy.initialize() to getTarget().

Original pull request: #208.
DATAMONGO-1009 - Adapt to new multi-store configuration detection.

We now consider repositories managing domain types annotated with @Document MongoDB specific ones.

Related ticket: DATACMNS-526.
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-1005 - Improve cycle-detection for DbRef's.

Prepare issue branch.
DATAMONGO-1005 - Improve cycle-detection for DbRef's.

Introduced ObjectPath that collects the target objects while converting a DBObject to a domain object. If we detect that a potentially nested DBRef points to an object that is already under construction we simply return a reference to that object in order to avoid StackOverFlowErrors.

Original pull request: #209.
DATAMONGO-1005 - Improve cycle-detection for DbRef's.

Made ObjectPath a more ubiquitous type in the nested method calls to avoid the extracting and rewrapping of the current object. Introduced ObjectPathItem that captures the object, idValue and collection tuple to avoid performing the property lookup multiple times.