Add dependency graph among gateway plugins.

Remove gateway-order hack in config file.

Now gateways can calculate and publish their dependencies at runtime,
based on how they're actually being instantiated according to the
config, and Stargate will calculate an ordering that works and
automatically initialize them in such an order. And it will automatically
ignore gateways with broken dependencies (that depend on another gateway
which is either not configured, not present or fails to load).

This will make configuration less fragile, because the gateway order in
the configuration file doesn't matter, there's no need to specify a load
order manually, and misconfiguring a gateway plugin should have deterministic
downstream damage.