Improve how hooks are modelled

This breaks cucumber master, but I think it's the way forward.