Refactored data I/O so that it is no longer attached to the Table class. This will allow it to be used for the NDData class as well as any other classes in future.
Make NDData inherit from DataIO to allow I/O handlers to be registered.
Check that data_class is a sub-class of DataIO