'netplan try': do a better job at merging and checking for unsupported keys
We need to be really careful when merging config, as dicts could just be
replaced -- what we really want is to replace individual keys were applicable,
and be explicit about any settings we can't revert.
'netplan try': better handle reversion when 'netplan apply' fails
The generate step can still fail if the config is invalid; only the call to
generate checks that (and I'd rather keep it that way). So, check for failure
in generate, which used to simply exit (which would break things with a backup
left around, but no reversion done), and instead throw an exception we can
catch and then actually process the revert.