Missed testing that __version__ is a SmartVersion.
Reworking downgraders

This creates a __vers_downgraders__ attribute on VObject classes.
This attribute contains a dictionary mapping desired versions to a
Downgrader instance, which takes a state and returns a corresponding
Schema object.  This will be used by slave VObject classes to
generate the values for the older version of the object.