Guess a case-specific username and optionally include realm for integrated auth

When PostgreSQL receives our username, it will expect the case to match
Active Directory. For us to guess it correctly requires a lookup into
Active Directory. .NET makes that easy; I don't know how well this ports
to Mono.

While I'm here, I'm also adding an "IncludeRealm" option to the connection
string to add the realm to the username if the include_realm option is
being used on the server side.

WARNING: There's a serious bug here where one user could get access to
another user's cached connection is connection pooling is on and integrated
security is being used. This is because the user ID is not in the
connection string until the connection is opened, which is after any
pooling logic. I'll address this in the next patch.
IMPORTANT: Freeze user name in connection string when using integrated security

When connection pooling is turned on, connections are cached by connection
string. But when integrated security is turned on, the user's identity
isn't part of the connection string, so two users can get each other's
connections back from the connection pool.

This patch forces the username to appear in the connection string if
integrated security is on, before any pooling takes place.