ygen refactor design (#419)
ygen refactor design (#419)

* Initial working version of a document covering ygen redesign.

* Design for ygen intermediate representation.

 * (M) docs/code-generation-design.md
  - This PR adds a document describing a refactoring of the ygen
    library to add an intermediate representation to the generated
    code which can be used across library versions. It addresses
    a number of the shortcomings of the current design and has been
    prototyped in the 'restruct-ygen-interface' branch of the repo.
    This document will be checked-in to make the design POR before
    proceeding with integrating this prototype code into the
    production release.

* Add types for enumerations that represent union/enum conbinations.
openconfig/ygot,openconfig/ygot