Make hobbes cross-platform.

Decouple handleEvent by using ActionPredicate in watchTree.