I created and implemented the Material and MaterialType interfaces.

I realized that up until now, I was stupidly only allowing items in
recipes as input or output. Blocks needed to be allowed to. That's when I
realized that I couldn't allow BlockTypes and ItemTypes into recipes in
the same way unless they both implemented an interface, so I made the
Material and MaterialType interfaces, which include methods that apply to
both items and blocks. Lots of it has to do with I.D.s and data values,
because both blocks and items have those.

I also changed the name of OrderedCraftingRecipe to ShapedCraftingRecipe
because I believe more people will recognize it that way. "Shaped" and
"shapeless" recipes are already in the vocabulary of the Minecraft world.

Signed-off-by: REALDrummer <conman.davey@gmail.com>