Descriptor changes

The *Descriptor classes no longer have public constructors, and should now be created via DescriptorFactory. This change makes it easier for third party implementations to customise a descriptor without having to modify osworkflow's source.

The Register API has changed; an extra parameter (PropertySet) was added.