IDL: Generate union type containers

Commit b8e05fd added a half baked code generator for union type
containers. This CL implements the code generator and uses them for
union return values.

If (A or B) is given, the name of the corresponding container
type will be "AOrB".

Generated union type containers will have following methods:
- isNull(), true when no specific type.
- isT(), true when the container holds T.
- getAsT(), retrieve the value as T. Need to check isT()
  before calling this.
- setT(), set a value to the container. Allowed only once.

When a method/getter returns an union type, the binding layer
allocates an instance of the container class on stack, then
passes it to impl side as the last argument. The impl method
can set a specific value via setT() methods.
 
We already have build steps for IDL dictionary impl class creation, so
we can use the step for union type containers creation as well. The
code generator takes individual interfaces info, which contains
collected union types, then generates container classes from the
information.

This CL doesn't change the web-faced behavior.

BUG=240176

Review URL: https://codereview.chromium.org/680193003

git-svn-id: svn://svn.chromium.org/blink/trunk@184684 bbb929c8-8fbe-4397-9dbb-9b2b20218538