Denormalize space_guid, organization_guid on Event

[fixes #56974860 #56663444]

Firstly, this commit adds the requested `organization_guid` to the Event
model.

Secondly, this commit fundamentally changes the relation between the
`events` table and the `spaces` table. Previously, the `events` table
had a foreign key relationship with the `spaces` table. This led to
Events disappearing if their related Space was deleted. Since `events`
is desired to be an append-only audit table, this relationship had to be
broken. Unfortunately, the space relationship is used for access control
on the event, so the `space_id` relationship cannot be deleted.

This commit makes the following changes:

1) Adds a `space_guid` and `organization_guid` to the events table.
   These fields store the denormalized space and organization guids from
   the time of event creation.

2) Removes the non-null constraint from `space_id` so that the space
   column can be set to a safe value if the related space is deleted.

3) Changes the `on_delete` behaviour of space to update the event with
   a null `space_id` (rather than cascade deleting the related event).

4) Adds a DeletedSpace object to represent deleted spaces in the code
   (to avoid passing around nulls when an events related space is
   deleted).

5) Added tests to confirm the access control for the new relationship.
   If a space is deleted any related events are available only to
   admins. (Otherwise the access control behaviour is as before).

In the process we also updated vcap_relationships.rb to support
a :without_guid_generation flag to skip generating a [relation]_guid
method for `many_to_one` relations. This is so that we could continue
using `many_to_one` for the relation, but define our own space_guid
method. We added tests for the original `many_to_one` method.