3.0 - Dot notation for contain and query builder callable

I felt that creating contains for deeply nested association was a pain due to the verbosity of nested contains. Originally I avoided adding the dot notation for contain as in 2.x it is not flawless. This address those flaws from 2.x and brings back dot notation fro expressing containments

Additionally, I added the ability to express query conditions for a related table. I was missing this feature as it was not possible before to use custom finders and contain:

```php
$articles->contain(['comments' => function($q) {
  return $q->find('approved')->find('latest');
}])
```

Without this change, you will need to re-express those custom finders using array conditions, which is kind of tedious and sad.