Gui interfaces redo

This is what I hope is my final stab at interfaces for the GUI.
I have cleaned them up, commented them, and hopefully explained what they are used for.
I have not fully completed the readme yet.
Assuming it is agreed that this will work, I will try and finalize the DataTable related ones tomorrow.