Made random even more random!

- Random teams now not only randomises the order it picks players, but
also the order it then assigns them to teams.
- Fixed scramble vote spamming people with "you can't switch teams"
instead of switching them whilst random teams is enforced.
- Added a config loading framework that I'll get around to porting the
plugins to.
Pointless ceiling in table.ChooseRandom

The last upper bound will always be 1...
Improved vote scramble

- It should now detect when it causes an imbalance in the teams from
immune players being ignored and correct it.
- Also fixed sh_setteam, sh_forcerandom and sh_rr being ignored when
random forcing is enabled.
Added notification of Shine binding a key

Also fixed a potential error in the basecommands plugin.
Streamlined plugin config loading code

Got rid of repeated stuff and centralised config saving and loading to 2
base functions.
Merge pull request #30 from Person8880/develop

Various fixes/improvements.