[mqtt] Treat incoming empty string as NULL for most types (#16307)
* [mqtt] Treat incoming empty string as NULL for most types
Empty strings are often received when deleting retained topics when a device
goes offline, or as the result of a transformation that is missing
a value (such as a "scene" event from zwave-js-ui, which sends JSON with
a timestamp and the scene value, then immediately sends a value to the topic
with only a timestamp).
For string channels, add a configuration value to allow setting a specific
string for treating as NULL, since empty string can make sense for that
type.