Replace scope stack with easier to read scope tree
Remove duplicated functionality from push_scope
Add paramter to type annotator to support builtins