Add API for fishing results

The vanilla fields are ignored (they're a view-only list), this is similar behavior to DungeonHooks and its spawners. Though if need be, the vanilla fields can be made not final and used as the backing list instead.

The removal functions aren't present because removal is difficult to actually do: the function that returns the drops from WeightedRandomFishable can do literally anything, and the drop is very much intended to not always be the same. I can't think of any good way to actually identify one of these as being something you want removed, particularly since you can subclass it.

Custom categories would have to be part of an event, where a location for firing it from needs to be determined. The way chances are handled (each one subtracting its chance from the total) makes this not immediately obvious as to how to implement extendably.