Added mutually referenced embedded messages to proto file.
Forward declare all nested messages and enums. Refactored how message fields track referenced types so the CPP generator can generate proper types.