Rename AbstractModule to AbstractCachedModule
Rename AbstractDescriptorModule to AbstractDescriptor

The Descriptor interface extends CachedModule, so it is the usual
pattern for AbstractDescriptor to extend AbstractCachedModule while
implementing Descriptor.
Rename AbstractFeatureModule to AbstractFeature

This change also splits out the feature-specific API into a new
interface Feature, which AbstractFeature implements.