Half-baked idea about better defining kinds of attributes.

The idea is that instead of just giving `Spell` to an entity type, you
can give `Spell(spell=fireball)`.  Not quite finished yet though.