save a call to Map.get by iterating entries
copy map of structs to create before iteration

In case of nested structs like "(b(oss))", structs_to_create could be
modified while it is currently iterated. This violates assertions in
libgee and crashes the program. Iterate over a copy instead, then
continue iterating with the difference set to create nested structs.
accept "read" as a valid access type as well
treat access modifier "read" as "readonly"

Some descriptions use just "read" to mean "readonly". It is unambiguous
enough to assume their equivalence.
Merge pull request #1 from dffischer/recursive-structs

Support recursive structs
Merge pull request #2 from dffischer/readonly

support "read" as an access modifier