Generic Meta types and Tile interfaces.

Using Generic Types in the Meta item and block classes really helps to
simplify things.

Replaced all references to TileEntityGeneric in MetaTile with references
to a set of new interfaces, making the interaction between block and
tile more flexible and decoupled.