Add a Room and RoomRepository class

Room is a representation of a room with its events and attributes.

RoomRepository will take an API response containing an array of rooms, 
and map them to a Room class, including any configuration defined in 
DashboardConfig.
Use RoomRepository in the Sinatra app to load rooms
Update group.js to support new JSON endpoint format

- Use short_name field instead of the id
- Correctly handle when available_until is null
Remove Group#show_all? method as it’s no longer used
Set the meeting room name from the API

Use the ‘name’ field on the API to set the meeting room name, rather than
trying to automatically build a string.
Support the show_as_available and not_available_label options

When show_as_available is ‘true’, the room will appear as “available” if
no events are booked. This is the existing behaviour.

When ‘false’, the room will appear as ‘not in use’ - this is aimed at 
resources which have a formal booking process (eg. a research lab). A 
custom label must be provided as the ‘not_available_label’ parameter.
Display rooms in the dashboard view as ‘not in use’