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.
Can be one line, call ForgeHooks its exists for a reason.