Fix warnings in BlockEncodingManager
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
Add session to ConnectorMetadata calls

This is an alternate implementation of pull request #1159  The main difference
being this code add Session to each metadata function not involving a handle,
instead of making ConnectorMetadata a stateful instance. The session is not
passed to handle based methods and instead any connector needing session data
would need to store the session in the handles. This is consistent with the
handle design of other methods.
Add session to HiveTableHandle and HiveSplit
Rename HiveRecordCursor timeZone field to hiveStorageTimeZone
Use SQL format for timestamps in Hive JSON

When converting structural types to JSON write timestamps using the standard SQL format.
Fix deserialization of metadata in example plugin
Add automatic support for identity casts to FunctionRegistry
Add support for generic type literals to LiteralInterpreter

When an expression is serialized the literal values must be turned back into nodes, and
previously this required a custom function hard coded for each type.  The commit adds
support for any generic type to be serialized properly without custom code
Remove unnecessary guards from FunctionAssertions

Now that nulls and type promotion are handled correctly, remove guards that
ignored some exceptions in FunctionAssertions
Fix quarter date time function for issue #1220
Add test for timestamp literal with political time zone
Cleanup parsing of the time zones

Add test for time zone key parsing
Make TimeZoneKey case insensitive
Fix handling of UTC equivalent time zones
Remove GMT0 from zone file since it is UTC equivalent and the zone file has not been published yet
Add support for plugins to register new Types and BlockEncodingFactories