Add initial lifecycle and hooks into kubelet.

I agree with a lot of what @lavalamp  says; however, I think there is certainly room to do something different than what we do in the internal system that @brendandburns dislikes.  

We can certainly make a system that lets some pods be able to take a whole day to respond to a lifecycle event, or more.  But if we have to assume that _all_ pods might take a day, or whatever time limit you chose, it severely limits our ability to deliver both high utilization and rapid pod starting.  

One option is to make the pod creator voluntarily set a time limit on the command, visible in the pod API object. And then, later, we can expose the costs of picking a long time to users.