simplify safeCallback
fix StateIntersection
move intersect from StateChart to State

This makes it clear it doesn't have to be scoped to a StateChart