Add types for lifecycle events.

I think "blocking" is the right model, but with caveats.

What does blocking mean for PostStart? For instance, if the container dies before PostStart completes, I think the container is going to be torn down anyway.

Also, we should say something about timeouts here if we're going to mention this.