Native to backend conversion code

Fixed BasicNativeToBackendTypeConverter.ToBinary() (broken in commit d2b636accacf481589387fcd7d659817ad05f1cf): Reverted back to the correct "\\" when escaping byte values.
Push E string prefix 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.
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.
Expose UseConformantStrings and Supports_E_StringPrefix via NpgsqlConnection.