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
@markstory I don't think the `debug()` first problem is a huge issue. *If* it turns out to be an issue we could implement deep cloning of the query and return the debugged SQL from a deeply cloned query in `__debugParams` instead of the SQL of the same query. But I think not many people debug queries to shortly after modify them.