Introduce a second XA implementation which fully supports JTA Transaction Interleaving.

This pull request adds a new XA implementation which supports transaction interleaving for PostgreSQL by multiplexing "physical" (server) connections to service a single "logical" (client code) connection if interleaving is attempted upon the XA resource for the connection.

This implementation makes a noble effort to operate within the bounds of the connection pool's existing connection size, and only allocates new physical connections if a spare (idle) connection is unavailable for a configurable amount of time (see PGFullXADataSource.xaAcquireTimeout).

Setting xaAcquireTimeout = 0, effectively disables interleaving. The default is 50ms.
In a high-traffic production environment consisting of mixed transaction duty-cycle (short requests and long-running processes) running GlassFish 3.1.2.2, we've found 500ms to be more than sufficient to keep the pools from behaving erratically. The higher the timeout the less erratic the pool size vs. physical connection size will be, at the expense of transaction 'pauses' while the driver waits for connection contention to calm down.

This pull requests includes test cases which asserts interleaving and connection pool sizing behavior.

This driver makes PostgreSQL a viable option on GlassFish (and other JEE containers) when more than one XA resource is involved in a transaction (last agent optimization cannot be applied), and the transaction manager does not support explicitly disabling interleaving.