Deleting a space recursively should soft delete apps instead of destroying them.

Fixes 57414538.

We thought  about various approaches, and decided to use the approach where we override the default  destroy method of app.rb to do soft delete. Now since we are retaining the apps after Space is deleted, we are making the space_id column to be nullable, and ading checks in  model to ensure that it is nullified only when space is deleted. Stack is also nullified for apps as we want to only soft delete apps rather than destroyinh them when Stack is deleted. I have also added tests in space, apps and stacks specs to enure  everything is tested.