Association filtering and inner join

Makes it possible to force a INNER JOIN by setting `required: false` as a option to include:

```
Project.findAll({
  include: [
    {model: User, required: true}}
  ]
})
// SELECT * FROM project INNER JOIN user ON project.user_id = user.id 
```

```
Project.findAll({
  include: [
    {model: User, where: {last_name: 'Hansen'}}
  ]
})
// SELECT * FROM project INNER JOIN user ON project.user_id = user.id AND user.last_name = 'Hansen'
```