connection.* methods should not ignore AlreadyClosedException

The change got lost earlier during branch re-creation.
Backed out changeset 39d010399f9d

When network connection fails right before a connection negotiation/tuning
frame is sent, we want OperationInterruptedException to be thrown and not
AlreadyClosedException.

SessionBase#Transmit will throw the latter,
if we handle it, method continuation will eventually throw an OIE.
Replace confusing comments
Make it possible to provide a custom remote cert validator and local cert selector

Manually integrates https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/12
Ignore NotSupportedException thrown by BufferedStream writes

The issue seems to be an unfortunate buffered stream behaviour
aspect when there's data to read and a write is attempted.

Since this exception is very confusing and our intent is to shut
down anyway, we ignore it.
Make Subscription#Next return null/false when underlying channel is closed
Add test file missing from the previous commit
Merge bug25895 into default
Merge bug25911 into default
Merge bug25046 into stable
Merge bug26071
Ignore SocketExceptions when shutting down
Merge bug26079 into default
merge stable into default
merge default into bug26075
Silence some warnings
Silence CS2002 in unit tests
No need to override encoding, squashes a compiler warning
CS2002 is disabled in tests now
Test exception handling in IBasicConsumer#HandleBasicDeliver