Float support

Adds support for floats in the entire pipeline.

Also identified and fixed an error where variables could be declared with expressions that were of the wrong type if they were referenced with a variable.

closes #33 

---

Also simplified some of the type checking functions in `semantic_check.ml` for later use.