Completely re-implemented.

We're missing a few nicieties (like, the capping of the number of physical connections, which really souldn't be an issue if your pooling is correct anyhow, but from an administration standpoint is desireable.

We should also allow for setting a multiplier of 1.0, which would disable interleaving & sharing support, and throws PGXAExceptions, similar to how the original XA implementation did.

We've pushed the complexity of a lot of the code into the Physical connection, synchronized a few methods on the XAResource implementation (which needed to be serialized so that logical / physical connections weren't being munged while XA invocations were taking place).

It's probably possible at this point to start moving more of the XAResource implementation code _back_ into the PGXAConnection class, and expose just a few methods package-protected / public on the PGXADataSource to handle the physical connection bits.

The approach we're taking with this implementation should reduce locking to only the parts where it's necessary. Most invocations of Connection.**** methods will not require synchronization or locking to execute.