Allowing associations in Query::contain to specify a custom finder

This allows changing the finder method an associated Table uses for contains. Also, `/ORM/Association/SelectableAssociationTrait` was passing in "all" at all times to the Query, even if you changed the finder. This addresses #4408.

Thanks!
What is the problem with the query builder? I find it super simple to use and more readable that the arrays:

```php
$table->find()->contain(['Comments' => function($q) {
  return $q->find('custom', $options);
}]);
```