Bug 918651 - part 1 - remove unnecessary using statements from IPDL files; r=ehsan
Bug 918651 - part 2 - don't munge the translation unit's headers; r=ehsan

Keep the builtin headers separate from the translation unit's headers.
We do this so when we start twiddling with the translation unit's headers,
we don't have to handle cases where those headers are actually builtin
headers.
Bug 918651 - part 3 - add optional |from header| qualification to using statements in ipdl; r=bent
Bug 918651 - part 4 - add keyword arguments to _makeForwardDeclForQClass; r=ehsan

We're going to need these later when we hand-roll our own forward declarations
for classes and structs.
Bug 918651 - part 5 - qualify all IPDL using statements with required header; r=ehsan
Bug 918651 - part 6 - add unqualifiedTypedefs parameter to _ComputeTypeDeps; r=ehsan

When computing what set of includes a header file needs, we need to know
about all types that protocol-defined types use, not just qualified
ones: both global-scope names and same-namespace-as-protocol names are
valid to use without any sort of qualification.  This flag would normally
not be used in generating actual C++ code and therefore defaults to False.
Bug 918651 - part 7a - fix source files bootlegging things from IPDL headers; rs=ehsan
Bug 918651 - part 7b - fix Layers{Surfaces,Messages}.ipdlh header bootlegging; rs=ehsan

LayersSurfaces.ipdlh declares itself as |using| a bunch of types that only
get used in LayersMessages.ipdlh.  Since intelligent include-placing
recognizes that these types are not used in LayersSurfaces.h, the necessary
header lines get left out of the generated LayersSurfaces.h, leading to
compilation problems on some platforms.  Fix this by moving the appropriate
lines to LayersMessages.ipdlh.
Bug 918651 - part 7 - place includes intelligently in generated IPDL files; r=bent

This is where the magic starts to happen.  We move includes from the base
protocol header (${NAME}.h) to the parent and child headers (${NAME}Parent.h
and ${NAME}Child.h) to follow good include hygiene.

For the base protocol header, we examine the set of types used by struct and
union definitions to determine which headers we need to include.

For parent and child headers, we forward declare what we can and include
appropriate headers otherwise.  For forward-declared types, we include the
appropriate headers in the parent and child source files.
Bug 918651 - part 8 - remove redundant includes from IPDL files; r=ehsan

These include statements have been made redundant by all the qualifications
to the using statements.
Bug 918651 - part 9 - remove useless includes from IPDL files; r=ehsan

These includes are no longer needed.  It's much easier to locate these
includes when they're not obscured by a bunch of other stuff.
Bug 918651 - part 10 - remove the |USING CxxType| rule from the IPDL grammar; r=ehsan
Bug 934119 - fix syntax error for definition of --with-intl-api that manifests during ./config.status --recheck; r=trivial