Fix insert queries failing with expression objects.

Insert queries should support expression objects as values. This allows
geo features from MySQL to be used, and enables other platform specific
SQL functions.

Refs #4671
Fix issues with insert() and subqueries.

insert queries should accept subqueries as values for columns. This lets
the query builder be more composable and cover even more use cases
without much overhead. I've also added the missing traverse()
implementation as @lorenzo pointed out.
Simplify ValueBinder::placeholder()

Remove un-necessary code.
Fix up SQLite INSERT query generation

The UNION ALL transformation had to be updated so it reflected the root
query type using named placeholders instead of nameless ones.
Merge pull request #4681 from cakephp/issue-4671

Fix insert queries failing with expression objects.