Before config was allowed to be swapped while `Feature` was enabled,
which has led to a lot of loading code being moved into the
`SwapConfig()` method, making `Feature` initialization code way more
complex than it needed to be.
This patch forces `Feature` to get disabled before config swap. This
adds some verhead for swapping configs for already running `Feature`s,
but that's a small cost for way simpler implementations.
Previously auto-resolved aliases overwrote user-provided value,
which made it difficult to print response/error messages as a result
of a command, rendering auto-resolving unusable.
This patch fixes that problem by recording both alias and resolved
value inside a `HashTable` value.