Before this change PropertiesPath.Delete would "delete" locations from
an array by just writing null to them but not changing the size of the
array.
This could result in a deployment that looked like it should have been a
same ending up as an update. For example given a resource `X` with a
property `foo` set to `[1]` if you changed the program to set `foo` to
`[1, 2]` and set `ignoreChanges` to `foo[1]` the deployment would do an
update with `foo` set to `[1, 0]`.
This now errors that the path is invalid, this is similar to how we
error on invalid paths if intermediate objects are missing.