Change invocation of EdgeGateway::Configure

Move the config and template arguments to the initialiser so that:

- It behaves more like a class than a module. So that you instantiate it
  with a config and then call update on that object, which feels more
  natural than doing `foo.new.update()`.
- We can perform schema validation early and separately from applying the
  update. Which will be particulary useful when we expose a `--validate`
  argument in [#69717072].