Added "entity" framework

Redefined the room entity in terms of a new "entity" framework; all
entities of any type will be stored in a single map with a single set
of IDs.  Revised room.clj and core.clj to use it.

I'm not happy with the code for (define-entity) and (define-room).  It
doesn't look quite right.