This contains a breaking change for Halibut.
Service interfaces may not include any property that is a Task or Object, or has a Task or Object as part of a sub-class. This is to ensure that all types included in the messages used in halibut (both request and response) are of a known type.
Classes implementing IServiceFactory must now also provide a list of the registered service types - which enables restricting transmission to known interface methods and types.
The delegate on the ISecureClient.ExecuteTransaction method is now named.
The IConnectionFactory.EstablishNewConnection method now takes a delegate to create a MessageExchangeProtocol class (there is an extension method on IServiceFactory with a default implementation)
(Please skip this version and go to 4.4.4)