Device uuid persistence across config changes
### Current Situation

I don't know the exact behavior under the hood, so the following is my assumption based on observed behavior.
When the configuration of an existing device changes (for example name change or delay length) HB deletes the existing device and creates a new one, so a new unique device identifier is created. This means that in Homekit the device is deleted, along with all scenes and automations that only use this device and all automations that include this device.
This means that if I want to change to change a device name, for example the name of a switch from "Play greeting switch" to "Play welcome home greeting", so that I can support additional behavior, for example another switch called "Play good morning greeting switch", I either have to recreate all the scenes and automations, or I keep a "Temp switch". I replace "Play greeting switch" with "Temp switch" everywhere, rename the switch (which deletes switch "Play greeting switch" and creates new switch "Play welcome home greeting"), then replace "Temp switch" with "Play welcome home greeting".
It would be nice if the uuid of the device survived the name change, along with all of my Homekit scenes and automations.

### Proposed Change

The Homebridge UI automatically adds a UUID field for each device to the configuration form (maybe a hidden or a readonly field) and stores it in the config json. So if the user changes a property for an existing device, the uuid survives the changes. The new uuid would be generated only if the user specifically deletes a particular device in the UI config form and creates a new device.

**The user might use the JSON Config screen to modify the configuration.**
 
1. If the user modifies device properties, but not the UUID, then the device is not deleted and recreated.
2. If the user modifies the UUID, then the old device is deleted and a new device is created.
3. If the user creates new devices, missing UUIDs are programmatically added when the user saves the configuration.

**The user might modify the config json by hand in the filesystem.**

1. When Homebridge starts up, it checks the configuration and adds missing UUIDs programmatically and updates the configuration.

### Additional Context

Because of the multiple routes to updating the Homebridge configuration, this is a change to both Homebridge and Homebridge UI.
Link to Homebridge UI issue: [Device uuid persistence across config changes #3712](https://github.com/homebridge/homebridge/issues/3712)