Split a bit traefik into package. The idea behind this refactor is to
start move inter-dependencies away and do some DRY or SRP.
- Adds a `provider` package, with providers except `web.go`
- Adds a `types` package with common struct.
- Move `gen.go` to an `autogen` package
Signed-off-by: Vincent Demeester <vincent@sbr.pm>
I changed what I think is needed and I have done manual testing on this.
I tried to keep the changes to a minimun.
The changes are approx:
* HTML output now includes the provider name in parenthesis.
* I'm not versed in bootstrap, should the output group providers in a
* table?
* PUT is only enabled on /api/web.
* GET on /api returns a map containing all providers configuration
* GET on /api/{provider} will return the config as before on that
* provider.
Configurations are now cached from each provider separately so that
we can merge them together when one provider has changed config.
The Web module also returns full config info through the HTML call,
but REST API is working on a separate web configuration that is
sent in just like any other.