Items framework

Allows items to be combined to make new items.