In the course of #5387, this patch rewrites the lobby GUI page code to use object orientation.
Resulting folder structure:
```
LeaderboardPage/LeaderboardList.js
LeaderboardPage/LeaderboardPage.js
LeaderboardPage/LeaderboardPage.xml
lobby.js
Lobby.js
LobbyPage/AnnouncementHandler.js
LobbyPage/Buttons/BuddyButton.js
LobbyPage/Buttons/HostButton.js
LobbyPage/Buttons/JoinButton.js
LobbyPage/Buttons/LeaderboardButton.js
LobbyPage/Buttons/ProfileButton.js
LobbyPage/Buttons/QuitButton.js
LobbyPage/Chat/ChatCommandHandler.js
LobbyPage/Chat/ChatInputPanel.js
LobbyPage/Chat/ChatMessageEvents.js
LobbyPage/Chat/ChatMessageFormat/ChatMessageFormat.js
LobbyPage/Chat/ChatMessageFormat/ChatMessageFormatMe.js
LobbyPage/Chat/ChatMessageFormat/ChatMessageFormatSay.js
LobbyPage/Chat/ChatMessageFormat/ChatMessagePrivateWrapper.js
LobbyPage/Chat/ChatMessageFormat/StatusMessageFormat.js
LobbyPage/Chat/ChatMessageFormat/TimestampWrapper.js
LobbyPage/Chat/ChatMessagesPanel.js
LobbyPage/Chat/ChatPanel.js
LobbyPage/Chat/ChatPanel.xml
LobbyPage/ConnectionHandler.js
LobbyPage/GameDetails.js
LobbyPage/GameDetails.xml
LobbyPage/GameListFilters/MapSize.js
LobbyPage/GameListFilters/MapType.js
LobbyPage/GameListFilters/OpenGame.js
LobbyPage/GameListFilters/PlayerCount.js
LobbyPage/GameListFilters/Rating.js
LobbyPage/GameListFilters.xml
LobbyPage/GameList.js
LobbyPage/GameList.xml
LobbyPage/KickStrings.js
LobbyPage/LobbyPage.js
LobbyPage/LobbyPage.xml
LobbyPage/PlayerColor.js
LobbyPage/PlayerList.js
LobbyPage/PlayerList.xml
LobbyPage/ProfilePanel.js
LobbyPage/ProfilePanel.xml
LobbyPage/Subject.js
LobbyPage/Subject.xml
lobby.xml
ProfilePage/ProfilePage.js
ProfilePage/ProfilePage.xml
XmppMessages.js
```
The purpose is to improve moddability, extensibility, readability and scalability by decoupling different page components and separation of concerns.
The class container allows storing variables as locals instead of globals and facilitates information hiding.