* Check equality of shape data for the replaced and replacement input/output data in the model
* Connect data with shape in duplicateData method
* Disconnect shape with data which is being removed as unsued.
* Check that disconnected shape still have child dataToShape edges or consumers
* Refactor cleanUp to use removeUnsuedData and not duplicate code