ast: restructure hierarchy: drop Def class
ast: type of ArrayVariableDef is Array; add assertion for clarity
ast: mapper: stop silencing user AttributeErrors
ast: Fix mapper test after dropping Def class
Merge branch 'sem' into typecheck
Add two functional tests for future use