split generator into libraries

this is in preparation for splitting the discovery logic from protobuf
logic in the emitter, which will allow tighter optimizations for each
wire format
separate discovery parser from protobuf parser
transfer commit (separate marshaller)