feat(binding): split hooks to individual classes, make a hook manager
feat(binding): make events follow common convention, using EventHandler
feat(bindings): add periodic binding and thread synchronizer