3.0 reliable beforefind

The Model.beforeFind event is now triggered in Query::sql(), this has a couple advantages:

* Calling `$query->sql()` for debugging will now contain the full actual query to be executed
* Queries used as sub-expressions (like in unions) will contain modifications made by behaviors or other callbacks.

Refs https://github.com/cakephp/cakephp/issues/5115
Should this also check dirty state? I could see potential problems if someone puts a query object into debug() before executing it.