Allow non-entrypoint Hooks and change interface of HookCollection
Merge branch 'non-entrypoint-events'