Fix many-to-many self-associations

Fix for https://github.com/sequelize/sequelize/issues/1724

The following now work:

    // with `as` and `through` model
    Person.hasMany(Person, as: 'Childs', through: Family)
    Person.hasMany(Person, as: 'Parents', through: Family)

    // with `as` and `through` name (through model will be built)
    Person.hasMany(Person, as: 'Childs', through: 'Family')
    Person.hasMany(Person, as: 'Parents', through: 'Family')

    // with `through` model only
    Person.hasMany(Person, through: Family)
    Person.hasMany(Person, through: Family)

    // with `through` name (through model will be built)
    Person.hasMany(Person, through: 'Family')
    Person.hasMany(Person, through: 'Family')

    // without anything!
    Person.hasMany(Person)
    Person.hasMany(Person)

Where `as` is not provided, `.hasMany()` will:

* use foreign keys `PersonId` and `PersonReverseId`
* create associations which can be accessed with `instance.persons` and `instance.personReverses`
* have accessor methods `getPersons()` etc and `getPersonsReverses()` etc

God know why you'd define a many-to-many self-association without defining `as`, but at least it won't crash if you do now!

PS I know the plural of Child is not Childs! But Lingo doesn't seem to...