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.