Added IDynamicItemModel as a way to define a custom ItemStack rendering method

This is my replacement for #1597, which was essentially all RainWarrior's idea; I just implemented it. :P It allows users to create an `IDynamicItemModel`, which is an `IBakedModel`. The special thing here is, when `RenderItem.renderItem()` is called, it first checks if the passed in `IBakedModel` instance is an instanceof `IDynamicBakedModel`, and if it is, delegates all rendering to the model instance. This allows for what I wanted to do in #1597, but just moves the hook farther up in the stack, and allows for more people to use it in many different cases.