Native to backend conversion code

Fixed BasicNativeToBackendTypeConverter.ToBinary() (broken in commit d2b636a): Reverted back to the correct "\" when escaping byte values.
Added class BackendToNativeTypeConverterOptions to describe UseConformantStrings, Supports_E_StringPrefix and SupportsHexByteFormat.  Maintain one on each connector for use during encoding.
Push E string prefix and escaping logic down the conversion stack so that array elements can use the same logic.
Only escape \ if the backend is expecting non conformant strings.
Implement string escapes in a function rather than using multiple string.Replace() calls.
Do all bytea string escaping in ToBinary(), and then do not escape its output again.
Encode bytea data in the new hex format when possible (>= 9.0), which cuts some such strings in half.
Don't use the E prefix if the backend doesn't understand it.
Assume non conformant strings on all version 2 connections, since we can't track changes to the setting.  The E prefix causes this to work if the backend is expecting conformant strings.
Expose UseConformantStrings, Supports_E_StringPrefix and SupportsHexByteFormat via NpgsqlConnection.
Removed Debug.WriteLine().
Fixed backward class name.
Remove change from github pull request https://github.com/franciscojunior/Npgsql2/issues/35
ToBinary() changes

Replace BitConverter.ToString() with a custom implentation.
In ToBinaryEscaped(), start the StringBuilder at the same length as the source array, not 5 times as long.
Merge https://github.com/franciscojunior/Npgsql2 into native-backend-convert-2

Conflicts:
	src/NpgsqlTypes/ArrayHandling.cs
Removed unneeded paramater.
I was able to improve speed performance of ToBinaryHexFormst() a little more.
Change to verskon 8.1 for E string prefix support, per documentation.
Merge pull request #38 from glenebob/native-backend-convert-2

Big rewrite and optimization of code which converts data from Npgsql to Postgresql. Native to backend conversion code.

Fixed BasicNativeToBackendTypeConverter.ToBinary() (broken in commit d2b636a): Reverted back to the correct "\" when escaping byte values.
Added class BackendToNativeTypeConverterOptions to describe UseConformantStrings, Supports_E_StringPrefix and SupportsHexByteFormat. Maintain one on each connector for use during encoding.
Push E string prefix and escaping logic down the conversion stack so that array elements can use the same logic.
Only escape \ if the backend is expecting non conformant strings.
Implement string escapes in a function rather than using multiple string.Replace() calls.
Do all bytea string escaping in ToBinary(), and then do not escape its output again.
Encode bytea data in the new hex format when possible (>= 9.0), which cuts some such strings in half.
Don't use the E prefix if the backend doesn't understand it.
Assume non conformant strings on all version 2 connections, since we can't track changes to the setting. The E prefix causes this to work if the backend is expecting conformant strings.
Expose UseConformantStrings, Supports_E_StringPrefix and SupportsHexByteFormat via NpgsqlConnection.
Binary backend format support

Added infrastructure to enable binary backend formatting.
Added binary conversion handlers for int2, int4, and int8.
Merged existing bytea binary support into new infrastructure, making it transparent.
Renamed some of the conversion functions to be more descriptive.
Added binary boolean backend encoding.
Fix bug where all connectors were using the same type converter options object

Add copy constructor to NativeToBackendTypeConverterOptions.
Keep distinct options object, initially == default, per connector.
Optimize away unneeded calls to UTF8Encoding.GetCharCount(), UTF8Encoding.GetChars, and new string(char[]) in favor of UTF8Encoding.GetString().
Make NativeToBackendTypeConverterOptions immutable and IClonable, kill the copy constructor.
Test comments

Added clarifications.
Removed comment thar makes a now false statement.
NpgsqlConnector

Added warning comment about E string prefix.
ProcessServerVersion() now private, per FIXME.
Update/correct formatting on recently added functions.
Added comments explaining the UseConformantStrings flag in more depth.
Binary test updates

Add internal flag that fully suppresses binary backend parameter and result formatting.
Add reflection-based code to set and observer this flag in the test suite.
Add a test that reports failure to bind to the flag.
Add a couple tests that suppress binary backend encoding to make sure text encoding is tested on types that support binasy encoding.