Hello World

- AST changes
  - Expressions cannot be statements
  - functional calls can be expressions or statements
- refactor AST printing to be uniform and separated from the types declaration
  - removed redundant print methods
- split SAST variable declarations and assignments into two different types
- split SAST checks, printing and helper methods into separate files
- add string literals support in code generation

# - Got Hello World to Compile and Test in CI!
I see that this is how it was being done before, but does it make sense to run the translator in something called semantic_check?