Refactor to remove a lot of special casing from onInventoryClickEvent.

Added onClick method to PanelButton and setup concrete button classes for handling the different behaviors. The onInventoryClickEvent only needs to get the button object and call its onClick.

More refactor needed.