Implemented attributes dictionary and reworked Player.use_item().

This actually fixes use_item(), and the attributes dictionary should be more expandable rather than adding a new variable for each attribute. I didn't move any existing variables to the attributes dictionary yet.