refactor into separate classes, implement reload command, simplify configuration code

To reload, use `/zchat reload`, you need the `zchat.reload` permission to do so.