Device naming: do not default translation_key to device class
Previously we defaulted translation_key to the device class, as it
seemed necessary to get the class translations to work.
But actually the side effect this caused was to use the super class
name (to inherit translations) instead of returning None when there
was no explicit name.
Rather than getting that side effect by mis-setting the translation
key, it is better to detect when we should use the device class as
the name, by checking the undocumented _default_to_device_class_name
attribute from the superclass. This is set by the base classes that
properly handle translation when there is a device class with a name.
For base classes that do not set this, we avoid getting None appended
if we adjust our logic to take this into account.
Issue #1856.