This adds a handful of functions that can be used in expressions:
* Casting functions
* `to_boolean(x)`: Convert `x` from a boolean, a float, or an integer, to a boolean
* `to_integer(x)`: Convert `x` from a boolean, a float, or an integer to an integer or parse a string as an integer
* `to_float(x)`: Convert `x` from a boolean, a float, or an integer to a float or parse a string as a float
* `to_string(x)`: Deparse `x` to a string
* `is_finite(x)`: True if `x` value is a floating point finite number
* `same(x)`: One value of `x` if all values of `x` are the same, otherwise error
Duplicate columns in various operations are now properly detected and given a nice error message.