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 think that makes sense. it's certainly easier on the implementation side to do it that way