We need to support structs using the following syntax: ```python @dataclass class A: x: i32 y: f32 def f(a: A): print(a.x) print(a.y) def g(): x: A = A() x.x = 5 x.y = 5.5 f(x) g() ``` I think this already works at the ASR level and in LLVM, so the tasks are: * [x] Implement support for this at the AST->ASR level * [x] LLVM tests * [x] CPython tests * [x] C tests