Move into TaskState, drop Event (#2799)
move dependencies and event into TaskStateType
remove execution_data
This will drop the allocation behind Event when a task becomes Done.
It also move dependencies from Task to TaskState, which make it more efficient to drop TaskState when GC is able to do that.
It also reduces the total size of Task because `dependencies` and `event` share memory now.