3.0 translate type

This PR gives devs the ability to use an INNER join in the TranslateBehavior.
Example `Table` usage:
```
$this->addBehavior('Translate', ['filterEmpty' => true, 'fields' => ['title'']]);
```
Refs #4652
No, there are not any other cases where something is reset at the end. This kind of stuff makes me nervous because the amount of possible scenarios where the state would not be reset is very high. I think, tough that we could pass the joint type option on the fly to contain().