OGM-208 Metadata API initial proposal

Previous pull request: https://github.com/hibernate/hibernate-ogm/pull/196
JIRA: https://hibernate.atlassian.net/browse/OGM-208
Alternative solution:

This solutioni fix the previous pull request and follows Emmanuel initial proposal using proxy generators to create contexts.

This branch and the branch with the alternative proposal have a common series of commits, they started to differ after the commit: https://github.com/DavideD/hibernate-ogm/commit/4916606cab6c8aedbac566a281ff608ff73d35aa OGM-208 Add common mapping implementation classes 

Branch 208-v4-common grouped all the common commits and it is the starting branch for both solutions