Completely overhauled the inventory class. It is now a non static class, but it maintains a static instance that represents the main inventory
The inventory data structure is a Map between item IDs and item counts.  Obtaining item instances is done via the item cache
For saving and loading the main inventory, the Inventory class provides static save and load methods that handle this automatically
Chests now hold their own inventories rather than lists of items
Settings has been updated to work similar to Inventory, where it is a non static class but holds a static instance, and has built in static save and load methods
AbstractItem has been renamed GenericItem, and is no longer abstract
GameScreen now holds a non final plot instance, thus it can be loaded more easily