This class provides the necessary business logic to ensure that any assets attached to a record are safely deleted, published, or protected during certain operations.

This class will respect the canView() of each object, and will use it to determine
whether or not public users can access attached assets. Public and live records
will have their assets promoted to the public store.

Assets which exist only on non-live stages will be protected.

Assets which are no longer referenced will be flushed via explicit delete calls
to the underlying filesystem.