Add types for lifecycle events.

I'm very worried about bike-shedding here, but I'm still not comfortable with the distinction and the params.  I feel like you're either getting the full timeout you asked for or else you are getting an emergency stop.  At that point, grace period is redundant.  I'm not sure the distinction between system and user is important enough or different events.

Is there a GCF here that we can commit and then iterate on?