convert hooks into soft hooks

This implements soft hooks in a very aggressive destructive way.

cc @Matt-Esch 
I'm mentioning this now because you're removing the knowledge of recursive hooks from the VNode. I'm not asking you to implement the feature, I just wonder if it is preferable.