Add types for lifecycle events.

Some of the context was in #1028 .

The API for stopping pods will be used in many, many scenarios, such as: restarts of sick containers that still respond to liveness probes, rolling updates, emergency wholesale updates, clean host drains, auto-scaling, live migration, ... In some of these cases, the user will want to shut down with the full notice period, which may allow time for clean shutdown or even for a replacement to be spun up. In other cases, they'll want to shutdown more rapidly, for instance allowing in-flight requests to be completed, but not awaiting a replacement, because the user knows there won't be a replacement. In still other cases, they won't want to wait at all, such as when killing a misbehaving workload.

What's at least as important as the time parameter is passing a client-provided termination reason, as proposed in #137. That would allow the PreStop (and PostStop when we add it) handler to make a reasonable decision about what to do, provided it was a scenario that was planned in advance.