traverse: don't set , pass current and parent node to callback
scope: add generic traverse
get rid of addToScope wrapper, setup node.$parent in createScopes, collect declaration names to allIdentifier in separate scope.traverse, link topScope with ast.scope