Fix hit tests for LayerWidgets and hittest_with_chain for all

1. LayerWidgets are now entirely transparent, unless one of their
children is hit during a hittest.
2. hittest_with_chain went through the tree in the wrong order, putting
background widgets in precedence over foreground widgets.
Fix coordinates supplied to ev_mouse_click
Simplify coordinate translation for event handlers (and DRY)
Provide a more helpful ostream format for widget ptrs