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