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!
There's no singular method right now to control the finder used for an association, other than querybuilder. Writing an app that needs translated associated records you'll have to write:
```
$query->contain(['Comments' => ['queryBuilder' => function($q) { 
    return $q->find('translations', ['locales' => 'en_US']);
}]]);
```
When with this change you can just do:
```
$query->contain(['Comments' => ['finder' => 'translations', 'finderOptions' => ['locales' => 'en_US']]]);
```
Or, if you take out 'finder' as an option as you suggest and keep 'finderOptions':
```
$this->Articles->Comments->finder('translations');
$query->contain(['Comments' => ['finderOptions' => ['locales' => 'en_US']]]);
```
Or, I can rewrite my changes here so it's just a single 'finder' key, which can be a string for a finder update, or an array to pass in finder settings with the finder as a key:
```
$query->contain(['Comments' => ['finder' => ['translations' => ['locales' => 'en_US']]]]);
```
Having the ability to do that inline will save people a lot of time. If the EagerLoader is the wrong place for this change to happen can you suggest where it should?