Lrm fixes

Closes all the LRM issues except format strings.

- Adds `and` and `or` keywords for boolean logic
- Operating on  `null`
- Equating `null` across types
- Implicit casting from int to float
- Hoisting functions, classes, namespaces, parameters, and routes
- Default function arguments.
i don't think we should allow classes to be overwritten.

less sure about if we should allow functions to be overwritten