The trick here is in the warning message that is included in the sobjectPartnerSoapSforceCom class:
//Warning: '<xsd:any>' element type has been changed to dataType List<DOM.XmlNode> called anyElement
Natively WebServiceCallout.invoke can't handle the <xsd:any> that appears in the WSDL for sObjects. See Supported WSDL Features.
The FuseIT WSDL2Apex tool can handle a WSDL that is combination of SOAP 1.1 (supported) and SOAP 1.2 (unsupported) definitions.
Unfortunately, it is only the SOAP 1.1 elements that are support. It just ignores the SOAP 1.2 parts. This comes down to what the underlying WebServiceCallout.invoke method supports.
Please consider voting for Support for SOAP 1.2....
I needed to add, what I assume is the definition of, the getCrm message which was still missing.
<wsdl:part element="ns1:getCrm" name="parameters">
After that I was able to generate the following Apex classes that can deploy successfully to Salesforce.
The error message about objectToConvert being a null argument is coming out of the T4 templates that are used to generate the Apex code.
Underlying this, the FuseIT parser code was failing to determine the targetNamespace of the imported type used for the return parameters by the web methods. I've updated the code base to use the imported targetNamespace in ...