fix: properly interpret subtraction
interpret some more expressions
implement matrix diagonalization algorithm
implement strict diagonalization (Smith Normal Form)
implement .equals(), .hashCode() in Matrix
implement stdlib::equivalent
implement stdlib::det, ::rk, ::tr
split up XSemantics code into systems for typing, validation and interpretation
work on check rules

Add many helpful error messages. Remove rules that are not necessary
(arbitrary expressions are typed when their containing statement is.)
Split up rules and add error sources where missing.
new check: all code paths in a function must return
new check: detect unreachable code
interpreter: check for errors in resource
refactor import management into own class
check if imports are unique
validate imports
disable unimplemented functions