OGM-408

The change comprises:

* Created a `<Store>Properties` interface with property constants specific to a store, e.g. `MongoDBProperties`
* Created `OgmProperties` and `DocumentStoreProperties` interfaces with property constants common to a wide range of (document) stores; The property and constant names are changed to reflect the levely they live on, so e.g. it's `hibernate.ogm.datastore.port` now instead of `hibernate.ogm.mongodb.port` and `hibernate.ogm.couchdb.couchDBPortNumber`.
* Enhanced `ConfigurationPropertyReader` to provide a uniform way for reading properties
* Consistently using `ConfigurationPropertyReader` to ensure consistent handling (type conversion, handling of default etc.)
* Created missing descriptor classes for configuration API (e.g. `Neo4j` etc.)
* Moved `@AssociationStorage` from CouchDB to core so it can be used for MongoDB as well