Refactored statements & added basic support for regular Statement (as in non-prepared)

• Made PSQLStatement a base class with PSQLSimpleStatement and PSQLPreparedStatement derivatives
• PSQLPreparedStatement throws SQLExceptions for any invalid Statement call
Comments for PSQLDriver
Fix settings building in PSQLDriver

• Ensures defaults for required parameters
• Accepts correct JDBC parameter of "user" instead of "username"
Initialize Statement properties

• Passes type, holdability and concurrency from Connection during construction
Merge branch 'develop' of https://github.com/gmokki/pgjdbc-ng into develop

* Replaced use of SQLException with a newly added NoticeException to keep java.sql.* types in the jdbc package
Comments
Add NotificationListener interface and a list of listeners in the basic context that are call when a notification happens
Add support for generated keys & close JDBC objects finalization

• Generated Keys support for Statement & PreparedStatement
• Moved all exceptions definitions into PSQLExceptions
• JDBC objects close on finalize (as a precaution only)
• Connection tracks Statements through weak references so the connection can be kept alive (i.e. pooling) without keeping leaked statements open
• Added methods for splitting SQL into statements and appending clauses in PSQLTextUtils
Maven :package creates standalone jar
Support type coercion in getters and setters
Date/Time/Timestamp Coercion

• Fixed parsing of Date/Time/Timestamp strings (using JodaTime)
• Corrected DB<->Java "date" conversions
Add basic support for ResultSetMetaData

• Information is loaded into registry along with other type information (no database access required)
• MetaData objects are very lightweight
• Some properties are returning invalid values currently (e.g. precision, scale)
Better support for ResultSetMetaData & numerous enhancements to support it

• Added "Modifier Parser" proc mappings for parsing a type's modifiers (almost exactly like i/o parsers). All current types that use modifiers have implementations.
• Precision & Scale of ResultSetMetaData should now returned correctly for types that have them
• CatalogName & SchemaName (if available) are now correctly reported
• IsCaseSenstive uses the Type.Category to determine its answer (Strings and Enums are)
• isNullable now handles domain types
• Type class now has an "unwrap" method to get the truly base type of a given type (i.e. no arrays, domains, etc)
• Registry allows types to be loaded by their associated relationId (although we store no other "pg_class" information)
• Catch and report errors in the simple utility methods of BasicContext (e.g. execQuery)
ResultSetMetaData support for SQL Type and DisplaySize

• Encoders and Decoders now report the SQL type they encode or decode
• DomainTypes now load their type modifier
• PgTypes load domain specific properties
Use const references for more Settings
Speed up row mapping

• Custom mapping info is calculated once per query execution
• Removed unused data from PgType and PgAttribute queries
Speed up reflection usage

• Use setAccessible
80% implementation of DatabaseMetaData

• DatabaseMetaData is missing a few implementation that return result sets
• Moved all meta data calculation to a shared file
• Made all PSQL* classes package private
• Fixed setObject/getObject coercion to/from primitives and null
• Allow statements to manufacture result sets manually
• Command now send Sync before starting (if they can) so recover from previous errors
• Fix problems with CompositeType and dropped columns
• Added PrimitiveType that tracks PostreSQL's native types
• DomainTypes are correctly factored in meta-data information
Added DatabaseMetaData.getProcedureColumns implementation

• Allow getObject to coerce to arrays to alternate (compatible) types
• Fix array decoder's null decoding
Finish implementation of DtabaseMetaData.getBestRowIdentifier