Restore update locations when a socket reparse fails
Restore update locations when a socket reparse fails

Prior to this change, socket reparse would modify the `updates` array of locations, but not restore the original values if the parent fails to parse with the new socket value. This would cause `Container#getFromLocation` to throw after falling off the end of the linked list.

The fix is to save the update locations before attempting to parse the socket as a new block, and restore them if the parent reparse fails.

droplet-editor/droplet,droplet-editor/droplet,joshlory/droplet,joshlory/droplet,PencilCode/droplet,PencilCode/droplet