Inventory GUI mostly complete and some refactoring

The inventory GUI should now have all of its functionality implemented
except for some error handling.
The Item class was refined into multiple specialized classes.
Some of the recipe GUI was implemented.