the base edge Relation is now responsible for initialization

initRelation() is no longer an abstract method, it is now implemented
by the base edge Relation that will setup the relationship based on the
$direction attribute which presence is mandatory for every inheriting
edge relation.

Also in this commit, adding passed attributes to the relationship on
init and getting rid of unused $start and $end class properties
test storing different data types preserves types
add the ability to retrieve belongsTo edge

With this commit, we are now able to retrieve relationship edges such
as:
$account->user()->edge(); and we will get the stored edgeIn
relationship, this also implements unique relations where saving new
ones deletes any existing relationship.