Grand refactoring for version 2.0

Made a more generic approach for mapping, by not calling objects entities or value objects anymore
Also split mapping into different needs: Unidirectional, Bidirectional and Bidirectional with strategy