Add SQL types to compiler and interpreter
Optimize function call arguments
Add casts for implicit coersions during planing
Remove casts from ExpressionInterpreter
Coerce function arguments
Fix adding explicit casts
Remove casting from compiler
Canonicalize expression nodes
Operator overloading
Replace static type list with TypeManager
Remove use of DataSize in Block api
Remove use of Guava in Block api
Extract BlockEncodingSerde interface from BlockEncodingManager
Move Type, Block and BlockCursor to SPI
Remove presto-main dependencies from Type implementations

In preparation for moving type implementations to SPI, remove all dependencies on presto-main classes and guava classes
Simplify VariableWidthBlockEncoding
Move types to spi
Replace ColumnType with Type
Add generic literal
Move Session to SPI