Pass the delete options into cascadeDelete calls.

This allows the cascaded deletes to access the original options used
for the delete.
Pass options into cascaded deletes.
Fire beforeDelete & afterDelete events from inside the transaction.

This helps ensure that any reads/writes done by an event listener are
part of the same transaction as the orginal delete request.