Currently, when hardware properties are set on a job, we persist them by simply overwriting that emulator's config file in HashMap order.
This prevents us from distinguishing what the default values were, and from later removing such custom properties.
Instead, we should probably append a divider to the file like '# Jenkins auto-generated stuff after this point', and then append the properties after that. Then each time we start the emulator, check for that line and add/delete entries after it as appropriate.
Assuming that reading the same property twice from the file takes the later value, we shouldn't have any problems with custom properties overriding default properties.
Not sure yet what we should do (if anything) for emulator configs that we have already overwritten.