Refactor OpenDataset to interface

OpenDataset is now a marker interface, and DefaultOpenDataset is the
default implementation.

This gives us a base interface to use, allowing overridding commands to
be looked up via the commandService#getCommandsOfType(OpenDataset).
DatasetIOPlugin: use getCommandsOfType

Instead of using getCommandsOfClass(OpenDataset.class), which does not
retrieve subclasses (and thus overridding implementations), we now use
getCommandsOfType.