Parse gir documents only when GirCodebase.saveJava() is invoked

addGir() only adds the new gir to a list, and saveJava() iterates
over it. The idea is that this way, the list can be reordered
before parsing, which permits doing a topological sort of the
include graph, and thus parsing type definitions before references
to them.
Add a Pair class, and pretty-wrap it into a NamespaceDescriptor class

NamespaceDescriptor describes a gir namespace with its name and
version, which is essentially a pair of strings. The pair is
wrapped into a specific class for type safety and clarity.
Add defined and included namespaces parsing to GirParser
Add a gir include dependency graph tracking class

This is required because we want to parse a gir file that defines
a type before parsing those who use that type. This means the
gir files to be parsed must be topologically sorted in reverse
order based on the include dependency graph before parsing begins.
The main role of the new GirDependencyGraph class is exactly this
sorting.
Topologically sort the .gir files based on includes before parsing

Use the reverse topological sorting feature of the new
GirDependencyGraph class to establish the correct order of .gir
files before parsing.
Remove the girs set from GirDependencyGraph

It is not needed to separately track this, as
girToNamespace.keySet() has the exact same contents.
Update comment about <struct>s and <class>es
Register parsed classes and records for later references

This permits using the parsed classes as superclasses, return types,
etc.
Add gboolean to the static mappings file