implement hasOne relationship

This commit introduces the hasOne() relationship and its functional
tests (no unit tests just yet), also changing the way relationship
queries are read and detected by the Eloquent Builder to treat them
accordingly when either dynamically loading or eager loading relations.
add missing and improve docs