Made IsFlagsCollection read-write

The decision whether an Enum is a flags collection is now made either by
the spec reader or the enum processor (not the Enum class itself.)
Multi-API support for XML spec parser

The XML spec parser now generates signatures for multiple APIs (gl,
glcore, gles1, gles2). Additionally, it supports per-token deprecation
attributes.
Simplifed Constant.Reference resolution

Instead of recursing, we use a simple do..while loop to resolve the
transitive reference of a constant. If there is a loop at any point, we
stop and use a brute force search over all tokens. If this still fails
to resolve the reference, then we report this reference as unresolved.
Sort tokens within an enum

This allows us to keep a specific ordering regardless of the token order
in the input file (much friendlier for source control!)
Re-added PixelInternalFormat

GL4.4 renamed PixelInternalFormat to InternalFormat. The missing tokens
are now re-added, since a lot of functions depend on them. Additionally,
a number of 'open' <use> elements now define a specific enum reference.
This is not necessary, but is good for documentation purposes.
Add apiname parameter to ISpecReader

This allows us to reuse the same ISpecReader implementation to parse
different APIs (GL and GLES).
Stable sort and correct extension names

Use a stable sort for generated elements, in order to make the generated
file work better with version control. Extension names are now extracted
directly from function names - solves issues with functions that are
defined in multiple extensions.
Allow comparison of function elements

This allows us to store both enums and functions in the same tree.
More line ending troubles...