Cache serialization fix

This fixes SerialBlockSlot to ensure that it gets properly serialized. Previously, it would not properly serialize all subgroups and data within them. By overriding the shouldSerialize method of SerialSlot, SerialBlockSlot is now able to check if the correct structure is intact in the file. When this is found to be missing components, shouldSerialize returns true even if the cache SerialBlockSlot is not dirty. Furthermore, AppletSerializer has a shouldSerialize method added as it may need to save even when its SerialSlot instances are not dirty if the instances have not completed proper serialization. This method is in turn called by the ProjectManager when saveProject is called to determine whether saving must occur. This fixes this issue ( https://github.com/ilastik/ilastik/issues/1052 ).