Initial commit to support INSERT operations.

This commit introduces support for INSERT DML commands, but leaves
UPDATE/DELETE out for now. However, many prerequisites for supporting
DML are made by this, UPDATE/DELETE will follow soon.
Redesign transaction handling in preparation of new FDW API to support DML.

This includes various changes on connection caching and the way
we handle transaction start and commit/rollback on the remote
Informix server. The cached connection handle is teach to carry information
about the current transaction state during foreign scan. Rollback
and committing the remote transaction occurs by introducing an XACT
callback used by PostgreSQL Xact commit/rollback.

Some of the current implementation is inspired on how the new postgres_fdw
handles this, but certain areas vary. We also want to support pre-9.3
versions, so we need to special case the code in the callback, for example.

The IfxCachedConnection structure is redesigned and splittet into
a IfxPGCachedConnection structure, which is now a derived member
field in the former structure. This is required since we still can't
include Informix headers directly in the PostgreSQL backend code and
we don't want to violate our strict casing of ifx_connection.ec (e.g.
we can't use the former definition of IfxCachedConnection directly
since it includes an Oid field definition not recognized within the
Informix API).

The IfxConnectionInfo structure, used to transport session specific
connection information during foreign scans now stores a scan_mode
member, specifying the current state of the scan. This allows to react
on certain stages of the scan on the connection cache for example (it's
used there for now exclusively, but maybe other use cases will be found
in the future). Furthermore, instead of relying on IfxConnectionInfo
structures during connection setup, use the IfxCachedConnection handles.
This saves us in copying various transaction states, which would be very
hard to get it right anyways to keep the correct state of transactions.

ifx_fdw_get_connections() displays additional fields to get some
additional information about connections wether a transaction is in
progress and statistical information about them. This is not compatible
to former versions, but since we haven't released any version yet i
don't bother for now (that means no update script available yet to update
an existing older version of this extension).

Conflicts:

	ifx_connection.ec
	ifx_fdw.c
Fix callsites of ifxSetupFdwScan() due to merge.
Minor review of commit c823d1520d037d0ef2cd2e6e4120cb13159d50ff.

Change ifxStartTransaction(), ifxCommitTransaction() and
ifxRollbackTransaction() to use ifxGetSqlStateMessage() instead
using their own handling of SQLSTATE via strncmp(), which looks
much cleaner. Additional code refactoring.

While at it, make ifxCloseConnection() to throw errors on
various conditions, e.g. uninitialized connection cache or
errors during closing an Informix connection. Formerly everything
was ignored, which looks dumb to me.

Also adjust some misleading or wrong comments.
Support DELETE and INSERT DML.

This adds support for DELETE and INSERT data modify actions
to the Informix FDW. UPDATE is missing yet, but will come within
the next commits. INSERT and DELETE prepare all the necessary
infrastructure though.

Basically all present actions use internal ESQL/C cursor support
(INSERT cursor) and updatable cursor (DELETE FROM <table> WHERE CURRENT OF <cursor>)
functionality. UPDATE will follow this scheme accordingly.

The basic idea is to establish the required cursor during the planning
phase of the associated foreign scan (in case of DELETE and, later,
UPDATE actions). INSERT doesn't trigger a foreign scan, so it declares
its own cursor during ifxPlanForeignModify(). UPDATE and DELETE just need
to declare their modify actions with WHERE CURRENT OF later and we don't bother
with any WHERE conditions anymore. INSERT uses the ESQL/C PUT syntax to
put the new tuple values into an insert buffer and flush them after
each iteration.

Some of the code might be bleeding edge and there are still some rough
DEBUG output out there, but they will be removed when the missing
UPDATE DML stuff is done. Also INSERT does work with INT8, INT4 and INT2
columns only for now, since all the other conversion routines to convert
PostgreSQL Datum to an Informix value aren't there yet.
Merge branch 'master' of https://github.com/credativ/informix_fdw