Data Descriptor cleanup

Here it is a clean up effort for the capabilities of the different DataDescriptor classes.  A new Capability class has been introduced to better enforce the consistency between the different capabilities.

Permissions are not included here because I feel this is not responsibility of the DataDescriptor, but of the Array/Table classes themselves.

Please check.