Better constructor for the backends
Also correct joined words without space

Actually, enchant did that for us. We just properly add tones/marks to
the resulting words.
Add a config key for typo correction level

Default at 2, it's actually the maximum accepted Levenshtein distance
between the input sequence and the suggested sequence. Set it to zero
and we effectively disable the typo correction feature.
Immediately save config file upon loading
reset() BaseBackend in constructor

reset() creates some initial variables. I think it would violate DRY if
we have to initialize them twice in the constructor and in reset().