Singular through model

PR for https://github.com/sequelize/sequelize/issues/2415

When a through table model is auto-created in defining a many-to-many association, the current behaviour is for the model's name to be pluralized and the same as the table name. This behaviour is at odds with the general Sequelize convention of singular model names and plural table names.

This PR changes that behaviour to make the model names singular.

So now:

    Person.hasMany(Task);
    Task.hasMany(Person);

creates a through model called `PersonTask` with table name `PeopleTasks`.

When retrieving a many-to-many associated table using eager-loading, the attributes of the join table are available in a key named the same as the through model (i.e. singular). It used to be plural, which makes little sense since there is only a single row.

e.g.

    Person.findAll( { include: Task } )

returns:

    [ {
      name: 'Bob',
      Tasks: [ {
        name: 'Do the washing',
        PersonTask: { ... }
      } ]
    } ]

This PR also fixes a few places in the code where the table name was used where it should have been the model name.
I guess they don't neccesarily. But I figured it'd be better if the tests show the right way to use through tables with these changes.

If I can't work out how to use the API from the docs, I often refer to the tests to see how it should work, so I thought it best that they provide a good example. I've been very careful in changing the tests.

I can revert these tests back to as they were if you prefer.