changed the room/character types to records

sorry to do this, but you can't use defined types in guards, but you can
use the BIF is_record/2 function in guards, so this will let us use
guards.
similarly with action type
changed room code to use the records

also added an is_record guard for an example in the main receive block