codegen: emit Reader and Builder module signatures

Reader and Builder modules are emitted in separate module hierarchies,
which should lead to the most straightforward code for capnp-ocaml
clients.  Enumerated type definitions are shared between the Reader and
Builder.  Variant type definitions are not shared, because in the
general case they may differ in structure (i.e. the Reader variant
references other read-only types, and the Builder variant references
other read/write types).
codegen: split genModules into genReader/genBuilder
codegen: enum accessors for Builder modules
codegen: struct field accessors for Builder modules
codegen: union field accessors for Builder modules
Printf.sprintf --> sprintf