Add Element lookup (ro and rw) in Element::List
Implement support for substitution groups.

Details:

  <xs:element name="Path" abstract="true" type="t:BasePathToElementType"/>
  <xs:element name="FieldURI" type="t:PathToUnindexedFieldType" substitutionGroup="t:Path"/>
  <xs:element name="IndexedFieldURI" type="t:PathToIndexedFieldType" substitutionGroup="t:Path" />
  <xs:element name="ExtendedFieldURI" type="t:PathToExtendedFieldType" substitutionGroup="t:Path"/>

  <!-- Arrays of paths -->
  <xs:complexType name="NonEmptyArrayOfPathsToElementType">
    <xs:choice maxOccurs ="unbounded">
      <xs:element ref="t:Path"/>
    </xs:choice>
  </xs:complexType>

Generates these classes as expected:
 class T__BasePathToElementType {...};
 class T__PathToIndexedFieldType : public T__BasePathToElementType {...};
 class T__PathToUnindexedFieldType : public T__BasePathToElementType {...};
... all with virtual KDSoapValue serialize( const QString& valueName ) const;

The bug:
 this generated code in T__NonEmptyArrayOfPathsToElementType::serialize:
   KDSoapValue _valuePath(d_ptr->mPath.at(i)->serialize("Path"));// converter_complextype.cpp:291
   where "Path" was hardcoded, instead of being the type-dependent element name.

Solution:
1) At parsing time:
in XSDType add a QName substitutionElementName getter+setter,
and while parsing the XSD and encountering a substitutionGroup attribute, fill this in the associated type.
(If the same type has more than one element name associated, they are aliases, any one will do.)

2) At code generation time:
Add a virtual method QString _kd_substitutionElementName() in types used by elements with substitutions.

Generate this code in T__NonEmptyArrayOfPathsToElementType:
 baseClass->serialize(baseClass->substitutionElementName())

This fixes SOAP-87 iteration 3.