Added check for path in __delitem__

This now raises a NeXusError, rather than a KeyError, meaning that it
will be caught by the report_error dialog in the GUI.
Moved more functions into BaseDialog

They were in BaseImportDialog, but they are useful in plugins, so they
need to be inherited from BaseDialog.
Changed GUI delete to work on treeview

Occasionally, NeXpy crashes when removing a root object from the tree.
I’m not sure this fixes it, but it seems a cleaner method of
identifying it as a tree view node.
Added natural_sort to datadialogs.py
Added check for a group index

Used in the NXgroup __getitem__