ConnectionManager.cs: Reduce direct use of ISessionImplementor.
Fix for NH-2128: Avoid firing the AfterTransactionCompletion notification twice when using distributed transactions and user-supplied connections.

The fix is by stopping the ConnectionManager from sometimes calling session.AfterTransactionCompletion(wasSuccessful, null). Such notifications should come from the transaction itself (as it already does) and in some cases from inside the session itself. Longer explanation in the bug report.

This also works to simplify the complicated bidirectional relationship between SessionImpl and ConnectionManager. The session should rely on the connection manager, but not the other way around.
Fix NH-3572: Avoid calling AfterTransactionCompletion twice when a distributed transaction is rolled back.