Tagged-PDF: Implement parsing of StructTreeRoot

Implement parsing of the StructTreeRoot entry of the Catalog. Also, the
Catalog::getStructTreeRoot() and PDFDoc::getStructTreeRoot() methods are
modified to return an instance of StructTreeRoot instead of an Object.

All elements from the StructTreeRoot are parsed except for:

- IDTree: it is a lookup tree to locate items by their ID, which would
  be barely useful because the whole structure tree is to be kept in
  memory, which should be fast enough to traverse.
- ParentTreeNextKey: This is needed only when the ParentTree object is
  to be modified. For the moment the implementation deals only with
  reading, so this has been deliberately left out.

Also, pdfinfo is used to print tagging info from Catalog::getMarkInfo()
instead opf assuming that the presence of the StrucTreeRoot implies that
the file is tagged.
Implement Object::takeString() method

Object::takeString() behaves like Object::getString(), but transfers
ownership of the returned string to the caller. Also, it makes sure that
calling Object::free() afterwards won't free the string that the Object
is holding.
Tagged-PDF: Implement parsing of StructElem objects

Implement parsing of StructElem tree nodes from the document structure tree,
each object is parsed as a StructElement instance. Attributes and extraction
of content out from elements are not yet handled.
Tagged-PDF: Parsing of StructElem standard types and attributes

Parse attributes and standard types of StructElem nodes of the
document structure tree. Type name aliases are resolved via the
RoleMap (and cycles detected). Both standard attributes and user
properties are mapped to instances of the Attribute class.
Attributes are parsed both via ClassMap references and directly
referenced from the StructElem objects.
Tagged-PDF: Text content extraction from structure elements

Implement StructElement::getText(), by using MCOutputDev. This output device
captures the a sequence MCOp structures representing the text drawing
operations for a particular marked content text object from the page stream.
Those are then used to convert the individual Unicode characters to the
returned string.
Tagged-PDF: Modify pdfinfo to show the document structure
Tagged-PDF: Implement the utils/pdfstructtohtml tool

This adds a new tool "utils/pdfstructtohtml" that uses the document
structure from tagged PDFs to generate an HTML document from it, trying
to preserve as much of the structure and some of the styling in the
output. This serves also as a demonstration of how to use the Attribute
and StructElement classes.
glib: Expose the document structure tree

Implements a new PopplerStructureElement classe, which builds upon
StructTreeRoot and StructElement to expose the document structure of
tagged PDFs in the GLib binding.

Navigation of the structure tree is done by an iterator-based interface,
using PopplerStructureElementIter.
glib: Private function _poppler_link_mapping_new_from_annot_link()

Move the code that creates a PopplerLinkMapping to its own function, and add
it as private API. This will avoid duplication of the code when creating a
PopplerLinkMapping from a PopplerStructureElement.
glib: Private function _poppler_link_mapping_new_from_form_field()

Move the code that creates a PopplerFormFieldMapping to its own function,
and add it as private API. This will avoid duplication of the code when
creation a PopplerFormFieldMapping from a PopplerStructureElement.
glib: Expose inline attributes of structure elements

Allows obtaining inline text attributes from structure elements. The text
is divived into "spans", which are groups of consecutive glyphs that share
their attributes. Each one of those is represented by a PopplerTextSpan,
which gives information about the text font and color, and the link target
for links. The list of PopplerTextSpans is created lazily when first used.
glib: Accessors for form fields of structure elements

Implements two methods which can be used on PopplerStructureElement objects
of type POPPLER_STRUCTURE_ELEMENT_FORM:

- poppler_structure_element_get_form_field()
- poppler_structure_element_get_form_field_mapping()

The only difference is that the later returns a PopplerFormFieldMapping,
which itself contains the PopplerFormField, plus the rectangle covered by
the form widget in the page.
glib: Accessors for document structure references

Implements functions to work with PopplerStructureElement objects which
are references to other entities in the document. Whether an element is
a reference can be checked with poppler_structure_element_is_reference(),
and poppler_structure_element_get_reference_type() returns the type of
object referenced. For POPPLER_STRUCTURE_REFERENCE_LINK references, a
PopplerAction (or PopplerLinkMapping) can be retrieved using the
poppler_structure_element_get_reference_link_action() or
poppler_structure_element_get_reference_link_mapping() methods.
glib: Implement accessors for element attributes

Implement inspecting the standard attributes of PopplerStructureElement
objects.
glib-demo: Pane showing the document structure

Adds a new pane in poppler-glib-demo showing the structure for Tagged-PDF
documents. It also serves as an example on how to to use the API for
PopplerStructure and PopplerStructureElement.