Introduce the concept of functions

This isn't completely done yet, there's work to be done to load in dialect specific functions. For example, Postgres and MySQL have a ton of math and string functions that aren't available to sqlite.

Columns currently support the concept of aggregate, but it's not as powerful of a concept as function. For example, the column's sum aggregation only sums that particular column, so you can't express sum(columnA.plus(columnB))