Add types for lifecycle events.

Ok, I added UserStop and SystemStop to differentiate, because I truely think they should be different nodes in the lifecycle graph.  Added notes describing the reason to be passed via the PreSystemStop hook.  I actually can't think of multiple reasons for PreUserStop, it's always in response to an API call.