Refactored Model.hasOne() constructor to be able to mix parameters

The ideia is in the future you can avoid passing a name (using other
Models table name) or chaining the call and use define for example like
this:

```js
Person.hasOne(Dog).as("pet");
```