Implement field access and name mangling

I only just realized that fields need to be handled differently
depending on whether they're used as lvalues or rvalues. I'll handle
that when we can actually assign things to them
When accessing `firmFieldEntity`, how do we ensure that the corresponding entry in `firmClassEntity` has been accessed?

I think we should get rid of the lazy `default` stuff and generate these maps on the fly somewhere (e.g. in `preVisit(ClassDeclaration)`). We could even have a third map for method declarations, then we wouldn't even need the `parent` pointer in member declarations.