Move implementation of IInventory from TileEngine to new abstract class TileEngineWithInventory.
This will effectivly remove IInventory from redstone engines.
Fixes #1180