Don't repeat building new scope
Throw exception when nums aren't passed in math primitives

Adds an abstract class that modify message based on function name.
Check number of args in some primitives
Helper class -> abstract class
Check no of args in comp primitives
Fix throwing exception in equals
Rename exception
Refactor validate methods to use new api

Adds args validator class that allows to do some checks
on given arguments.
Check types in math primitives
Check types in all primtives
Validate args in special forms
Add references