Defer type resolution until out of message processing

• Use TypeLocators to easily allow the type to be "located" at a later time
• Solves deadlock problem when trying to refresh types that are also being returned from the current query
ResultSetMetaData fixes

• Return empty strings for schema, table and column names instead of nulls
• Implement getColumnLabel/getColumnName per spec
ResultSetMetaData implementation is now backwards compatible

• Migrated unit test from original project
• Fix mod parsing defaults for Numerics and Strings
• Default to Integer.MAX_VALUE for unknown precision
• Default to 0 for unknown scale
• Fix numeric display size calculation
• Fix precision calculation for Time,TimeTZ,Timestamp,TimestampTZ
Properly initialize PGStatement.resultFields in constructor
Return STRUCT as SQL type for Record/Composite types
Fix occasional OutOfBounds exception in CompositeType.getAttribute
Throw NotImplemented from PGStatement methods that are not implemented