Remove `ast::pure_fn` and all concept of `pure` from the compiler
Merge remote-tracking branch 'cmr/various-cleanup' into incoming