Improvements: Type checking, and some grammar changes

Essentially, performing type checking to make sure proper types for statements and assignments.

Revising grammar to be more simple and equally as effective. Putting better error messages with line numbers.