Fix JSON serialization of TimeWithTimeZone and TimestampWithTimeZone

Add test to verify serialization
Prefix date time type classes with Sql
Replace use of java.sql date time classes with custom classes

Add custom classes for all sql date time types.  This makes it easier to control
the things like serialization.  Additionally, java.sql types loose information
like session time zone.
Add support for time* with timezone in JDBC
Fix JSON serialization of interval types
Add support for interval types to JDBC driver
Remove unnecessary methods from BlockBuilder
Clean up new Type and Block SPIs

Add JavaDocs
Rename methods and parameter names
Cleanup IDE warnings

Add missing @Override annotations
Replace uses of StringBuffer with StringBuilder
Make utility classes final
Rename NullType to UnknownType and move to presto-main
Require Type implementations to have a getInstance method
Replace manual slice copy code with Slices.copyOf
Rename RecordCursor.getString to getSlice and make it return Slice