Marked some funs as @[Raises], and removed some hardcoded fun names from the compiler
Properties (property, setter, getter) can now be restricted to a type with the syntax `property name :: Type`
`json_mapping` uses `property name :: Type`
Fixed an issue with macros incorrectly mutating original nodes