Refactored "BotConfig" class and added "AppContext" class.

BotConfig now reads its data from a "Properties" object.  Also, it's no
longer a singleton, though it is still treated as such.  This makes it
easier to unit test.

I also added the "AppContext" class for storing objects that are used
throughout the application.  BotConfig is stored in this object, since
it is accessed in many different places thoughout the codebase.

And I added a "ROOMS" property to BotConfig, so you can define which
room(s) you want the bot to join.
I feel there's a null-check missing here ;)