Abstract Rooms and Users in their own objects

I made a small abstraction for `Rooms` and `Users`.
I would like @ametaireau's opinion on that before merging.