Much more robust implementation of the FoodStats hook
 * Added IDefaultFoodModifier (for player-independent modifications) and IContextualFoodValueModifier (for player-dependent modifications). Implementations of the interfaces need to be registered with FoodModifierRegistry
 * Added FoodEaten event called from ItemStack-aware FoodStats.addStats, passing a heap of information (the food, the food values, the actual hunger/saturation added, the player)

Note: All of this is done by only hooking into the ItemStack-aware version of addStats, meaning things that bypass that method and call addStats(IF)V directly will not be modified. Food should never need to do that, though, so the mods that do will need to fix their food implementation