* implement hexagonal architecture pattern
* Add source code for article BAEL-2463
* add source code for article BAEL-2816
* remove irrelevant code
* Remove unnecessary default constructors
* Refactor equals and hashCode methods in Java 7+ way
* Remove equals and hashCode implementations
* Change test methods conventional order
* change saveRelation method to private
To make the code more clean and readable