Describe the bug
Issue brought up by Chad from #1157 (comment),
Config for most of the options needs to represent the configuration passed in (or mutated by plugins). A client's config contains the options it was configured with, and so does a workers. The combined plugin list should not be in config IMO. People use config to change-and-resplat, e.g. new_config = old_worker.config() + Worker(**new_config).
Arguably we should not be storing the plugin-mutated config in self._config for that reason too.
Also see #1157 (review) for more context.
Client.config() and Worker.config() need to represent immutable copies of the exact kwargs passed in to constructor or at least be sure they can be passed in to another constructor