Deal with the case where unrecognized string is given in `language`

You can find strange values in users' config files.
Fall back to the default language if `language` is not recognzied
Do not modify the object in place

It may be used elsewhere we don't know of
Merge pull request #310 from travis-ci/ha-bug-unrecognized_language

Deal with the case where unrecognized string is given in `language`