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
I don't think I fully understand the problem at hand. 

If the issue is only with unions could we clone queries that go into union()? This way we wouldn't have to worry about queries being mutated. It would also let us convert to sql/apply beforeFind without modifying how debug() works. This may not be possible though.