refactor Config API slightly, tests passed
- add a unified Config.declareSupports() method for use in initialisation
  - remove most of the check* methods, instead do this directly in declareSupports()
  - move common logic from {client,server}.init() into declareSupports()
- add a unified envvar validation system using composable first-class functions
  - exceptions thrown during validation automatic trigger config.writeEnvError()
remove util.checkClientMode in favour of a much simpler config.checkClientMode
move allTransportsEnabled logic into parent Config class
allow Config to direct their output elsewhere; useful for tests
move envvar parsing out into a @classmethod, fromEnv()