Get rid of copy and paste code in installer/ and unify them.

The powershell scripts had lots of duplication. Make the unified
code instead.
Original patch was provided by Craig Ringer.
Clear unused stuff from PgDtc_isolate() function. Also add CC_initialize_pg_version() call after CC_copy_conninfo() so as to avoid the trouble caused by early PG_VERSION_xx() calls.
Fix race condition in getting the current decimal separator.

The code to get the current decimal separator was not thread-safe. If two
threads concurrently saw that the locale had changed, they might both try
to free() the same string.

This isn't a perfect fix, there's still a race condition if a thread changes
the locale while another thread is running the psqlodbc code. But at least
this eliminates the race condition when the locale was changed earlier, not
concurrently, and even if it is changed concurrently, this is less likely
to crash, depending on the way localeconv() is implemented in libc.
Silence compiler warnings about unused variables.
Fix bug in building an abbreviated connection string.

Introduced by the keepalive-patch, which accidentally removed a line from
sprintf format string. Caught by a compiler warning.
Remove unused function.

Silences a compiler warning.
Remove unused or bogus PG_TYPE macros.

Some of these allegedly built-in types didn't exist in PostgreSQL source code
(maybe they did in some ancient version?), some were just unused in
psqlodbc code.
Minor cleanup.
Add a test case for data type conversions for results coming from server
Fix buffer overflow in SQLGetData.

If a PostgreSQL timestamp column is fetched using SQLGetData, into a
SQL_C_CHAR output variable, with size of 20-22 bytes, the driver might
overrun the buffer by a few bytes with unusual timestamp values, with
year < 0 or > 10000.

While at it, fix the truncation behavior for date/time/timestamp values
so that if the output buffer is too small, we still write what fits and
truncate, instead of writing nothing. This is something that one might
do on purpose, e.g. if you only want to fetch the year part of a date,
you might call SQLGetData() on a date column, with only 4 bytes long
output buffer. (although we haven't heard any complaints from the field).

Also, if the output buffer is of type SQL_C_WCHAR, but the buffer length
is odd, and we have to truncate, we didn't NULL-terminate the string.
Using an odd-sized buffer with SQL_C_WCHAR is a pretty unlikely thing to
do, but nevertheless I think this is more correct behavior.

Add test cases for the bugs fixed.
Fix a crash bug.
Add a switch type parameter to BuildAll Powershell script which makes
it possible to build the installers after building drivers.
Add msvc runtime dlls which are needed by the drivers to the installers.
Fix the bug reported by Phillippe Champignon.
The function SC_setInsertedTable() prepares an info for subsequent
'select @@IDENTITY' command. Take table name like catalog.schema.table
into account in the function.
Improve pgxalib.dll(MSDTC support).
1. Add an option which lets xa_open() try to connect to the database
   immediately. This would cause an error at enlistment in dtc when
   the authentication method depends not only on the db user but also
   on the OS user, which means the automatic transaction recovery is
   unavailable.
2. Log the error message in case of SQLDriverConnect() error.
3. Improve the logging.
Add an option to explicitly force/avoid the use of libpq library.
Add '#ifdef USE_LIBPQ' around the code which use PreferLibpq option
introduced in the previous commit.
Fix the regkey search bug when XARMcreate() causes an error at enlistment
in DTC.
Register the XA DLL on installation.
MSDTC runs in 64bit mode on 64bit machines and 32bit mode on 32bit machines.
We had better register the XA DLL on installation.
Additonal improvement on MSDTC enlistment.

Unfortunately the current pgxalib.dll can't recover transactions which use
sslmode verify-[ca|full] or whose authentication is SSPI, certificate or
ident.
When MSDTC.exe tries to connect to PostgreSQL it does so under Windows user
NETWORKSERVICE, which won't match the username the original user connected
to PostgreSQL as. So PostgreSQL will reject the connection.

In addition XARMcreate() doesn't detect it on enlistment because invoked
xa_open() doesn't connect to the specified datasource. Though it has no
problem unless crash occurs between PREAPARE and COMMIT, the recovery of
the transaction is impossible when such a crash occurs.

Now 3 diffrent behaviors can be speicified using the xaopt connection
string option.

 1: The current default behavior.
 2: Same as above except it simply examines if the recovery for the specified
    datasource is unavailable before calling XARMcreate(). Currently it only
    examines whether the connection uses sslmode verify-[ca|full]. I can't find
    the way to detect SSPI, certicate or ident authentication.
 3: Invoked xa_open() tries to connect to the specified datasource immediately
    as user Network Service.