give items a type
suppressing immediate messages, closes #151
suppressing spell messages post-battle (probably)
hopefully fixing #153 but idk
fixing #154
Spell::cost can now accept a function - the first argument is the player