Treat type as an expression in CAST

This allows the following kinds of things to work:

=> (select$ [[:cast 5.6789 [:decimal 5 3]]])
"SELECT CAST(5.6789 AS DECIMAL(5, 3));"
=> (select$ [[:cast "hello" [:collate :charset :collation]]])
"SELECT CAST('hello' AS charset COLLATE collation);"