Expression parser

Rewrote using expression visitor.. Way nicer - all tests still pass, hopefully no regressions but it is way simpler so hopefully it should actually make it better