ItemGroup fetching and beginning sort implementation

 - Changed the public item groups API to a single function, `FetchItemGroups()`, which returns a `HashMap<String, LinkedList<Material>>`
 - Making it so that a list of item groups should be passed to the sorting engine through `Sort()` and used in all the `MatchesMaterial()` methods
 - Added `boolean ItemGroupExists()` for frontend validation purposes
 - Modified default `itemgroups.yml` file to include examples of inheritance
 - Integrated item groups
 - Added command listener `SortingCommands`, integrated
 - Added `GeneralCommands` listener too
 - Added `Verify`