Improved multiline output

This lets us compose and print multiline strings without manually
adjusting indentation on each line.
Avoid using singletons

The IBind generator and the Settings class are now passed directly as
parameters. This allows us to run multiple generators in a single
process.
Avoid singleton Settings. Allow v1 signatures

A Settings object is now passed directly as a parameter, in order to
support different configurations in the same process. The XmlSpecReader
can now distinguish between, and support both, pre-GL4.4 and post-GL4.4
specs.
Avoid singleton Settings; make internal

Utilities.Keywords now accepts an explicit parameter, instead of
accessing Settings directly. This allows us to use multiple
configurations in the same process.

Additionally, the Utilities class is no longer public (the Bind project
is not meant to be consumed as a dll.)
Settings, GLTypes and CSTypes are now in IBind

Settings, GLTypes and CSTypes are no longer global singletons. Instead,
explicit instances must be stored in the IBind implementation. This
allows us to use multiple configurations in the same process.
Settings is no longer a singleton

Multiple Settings instances can now be created and used in the same
process.
Avoid singletons; Translate*() in FuncProcessor

This is part of a long-due source cleanup operation. GLTypes and CSTypes
are no longer global singletons, but must now be accessed through an
IBind instance. All Translate*() methods are now part of the
FuncProcessor. ToString() has been improved and the IEquatable interface
is now explicitly implemented.
Avoid singletons; Translate*() in FuncProcessor

This is part of a long-due source cleanup series. All Translate*()
methods are now part of the FuncProcessor. Additionally, ToString() has
been improved and the IEquatable interface is now implemented.
ParameterCollection now has better control of when its cache should be
rebuilt.
Avoid singletons; Move logic to FuncProcessor

This is part of a long-due cleanup patch series. All translation logic
is now part of the FuncProcessor. Language-specific code generation is
now part of the ISpecWriter, not the delegate class. Implemented the
IEquatable interface.
Avoid singletons; logic in FuncProcessor

This is part of a long-due series of source cleanup patches. All
translation logic is now part of FuncProcessor. Code generation is now
handled by an ISpecWriter implementation. Minor improvements to
IEquatable and ToString() implementations. Reduced the surface of the
public API.
Avoid singletons; improved ToString()

This is part of a long-due series of source cleanup patches. ToString()
is no longer used for code generation (this is handled by an ISpecWriter
implementation). This class is no longer public.
Avoid singletons; improve ToString()

This is part of a long-due series of source cleanup patches. ToString()
is no longer used for code generation (code generation is handled by an
ISpecWriter instance.) Enum is no longer public. EnumCollection now
exposes its backing store through an interface, rather than a concrete
class (simpler to change backing store in the future.)
Avoid singletons; collect all translation logic

FuncProcessor now implements all translation logic for types, parameters
and functions. This used to be scattered in the various classes (Type,
Parameter, etc) resulting in a rather disgusting spaghetti. Code
generation has been removed from FuncProcessor and is now handled by the
various language-specific ISpecWriter backends.
Updated IBind implementations to avoid singletons

IBind implementations must now store explicit references to Settings,
GLTypes and CSTypes instances. This allows us to use multiple
configurations in the same process.
Avoid singletons

A reference to a Settings instance must now be stored explicitly.
Avoid singletons; collect code generation

ISpecWriter implementations must now store explicit references to a
Settings object. Additionally, all code generation is now handled inside
the ISpecWriter implementation (it used to be scattered over all Type,
Parameter, etc classes resulting in unmaintainable spaghetti code.)
Avoid singletons; allow -mode:all

Explicit Settings objects are now created for each generator. A new
-mode:all option has been added, which generates bindings for all APIs
in one go (useful for the post-GL4.4 specs, which collect all APIs in a
single file.)
Regenerated bindings with the latest generator

The new bindings have improved enum documentation and fix an issue with
incorrect overloads in wrappers with generic parameters.