Add types for lifecycle events.

While I differentiated user-initiated and system-initiated events in my comments, I really think we should have 1 PreStop handler, pass the termination reason and grace period duration to it, and let it figure out what to do. Many ecosystem add-ons will use the API to stop and/or restart pods. It's a widely useful primitive. For example, if the pod is stopped by a PaaS automatic deployment system, is that user-initiated? What about a cluster-level monitoring service that detects broken/slow instances and shoots them?