Add DataFuException, add debugging to Coalesce

DataFuException can contain useful debugging information such as aliases for the UDF and data relevant to the failure.  This can make debugging easier.

Coalesce now uses this when there is an error casting data to a particular type in 'lazy' mode.