I don't know of any really concise way of doing this, but I'm no expert. For the rooms that things start in, I'd give every thing a room attribute and when things are reset I'd place them via setting this attribute:
The World is a room.
Every thing has a room called start position.
The chest of drawers is a supporter.
The bed is an enterable supporter.
The alarm clock is a thing.
The start position of the player is the World.
The start position of the alarm clock is the World.
The start position of the bed is the World.
The start position of the chest of drawers is the World.
When play begins:
reset the world.
To reset the world:
repeat with x running through all things:
now x is in the start position of x.
But this doesn't account for the state of relations, such as being on a supporter, and all the other attributes a thing might have, e.g. open or closed. Also, this way, you couldn't have an item out of play; it would have to get a starting position of "a room called nowhere" or some other dummy room.