Add Material interfaces

This PR adds Material interfaces for items and blocks. Its improved version of my recent pull request (number 2).