Tyrant: Use named parameters

I had a long list of positional arguments and I had no clue what they
mean.
Tyrants: Remove unused CONFIGS

Sadly this is not really being used. It may return at a later time, but
we should remove dead code now.
Tyrants: Rename 'type' to 'platform'

Type is quite a vague name
settings: Use a hash instead of a struct

The advantage of this scheme is that every parameter in the PLAYERS
array is given a clear label for its purpose.
The disadvantage is that there is no checking for whether someone typos
factoin_id: rather than faction_id: or similar. The next commit solves
this.
Tyrants: Double-splat player hash into Tyrant ctor

This gives the advantages of clearly-labeled arguments in
Settings::PLAYERS and checking for correctness. If there is an incorrect
keyword argument, the Tyrant ctor will reject it.
TyrantFactionChat: Get nick from bot.nick

Breaks dependency of a plugin on bot-config constant
bot-config: Explain constants

These are CHANNELS_TO_JOIN, BOT_MASTERS, BOT_NICK
Move all bot configuration into bot-config

A user should NOT have to edit bot.rb to run the bot, unless they have
special needs.
Faction: Allow non-functions for player
Cinch::Tyrant::Faction: Take named arguments
Merge branch 'better-configs'

* better-configs:
  Cinch::Tyrant::Faction: Take named arguments
  Faction: Allow non-functions for player
  Move all bot configuration into bot-config
  bot-config: Explain constants
  TyrantFactionChat: Get nick from bot.nick
  Tyrants: Double-splat player hash into Tyrant ctor
  settings: Use a hash instead of a struct
  Tyrants: Rename 'type' to 'platform'
  Tyrants: Remove unused CONFIGS
  Tyrant: Use named parameters