cairo: support parameterized Gouraud shading

Bug 56463
Implement overprint in qt interface

With minor api fixes by me (Albert Astals Cid)
Memory leak in CharCodeToUnicode

Bug #54702
Don't allow invalid unicode to be passed to backends
FormFieldChoice ctor: Don't convert "human-readable" option names to unicode

Despite that comment, they're not meant to be read by humans only, but they
are also used as option identifiers.

This patch stops poppler from forcing them to be unicode. Instead,
they now stay the same encoding as their corresponding /Opt entry.

This fixes poppler not being able to recognize selected entries
in documents produced by poppler itself: previously, the /V value was
always written in Unicode encoding, and therefore it was very often not
binary-equal to the corresponding /Opt entry.
Now the /V value is always binary-equal to the corresponding /Opt entry.
FormFieldChoice::updateSelection: Fixed wrong loop condition
FormFieldChoice::updateSelection: Write /I too

This improves handling of choice fields containing two or more entries
with the same name, and also makes sure that the previous value of /I
gets updated (failing to update it results in acroread still showing
the old selection).
FormFieldChoice: Handle /V values containing the export value instead of the option name

According to the PDF spec, /V should always contain an "option name" and
never an "export value" if /Opt is an array of couples. However, it
seems that acroread works the other way round: it is able to identify
selected options only if they are referred by their export value
instead of the option name.
With this patch, we mimic this behavior.
FormFieldChoice ctor: Look for selected options in /I instead of /V if /I is available

Since /I stores the indices of the selected options, it can distinguish
duplicate option (i.e. options with the same name/export value).
FormFieldChoice::updateSelection: Fixed wrong loop condition
FormFieldChoice ctor: Stop scanning if /V is a string and the corresponding option has been identified
FormFieldChoice ctor: Added support to recognize user strings as /V value

Fixes http://lists.freedesktop.org/archives/poppler/2012-October/009688.html
Editable FormFieldChoice: Clear editedChoice when one of the predefined option is selected

This patch clears the user-entered text when the user interacts with
predefined options.
qt4: Export information about the document form type

This patch also wraps the code that checks the form type and moves it
from pdfinfo to the Catalog class.
Replaced forward declaration of enum CryptAlgorithm with a proper #include

Forward-declaring enums is illegal. It hasn't caused problems so far
because XRef.h includes Object.h, which in turn includes Stream.h, where
the enum is defined.
Therefore, enum is alreadly defined when the compiler reaches that line.

To avoid future issues, I've replaced it with a proper #include "Stream.h"
(which expands to nothing as Stream.h has already been included at that
point).

I've also added a #include in XRef.h because it references enum
CryptAlgorithm too. Also in this case, it expands to nothing.
Merge remote-tracking branch 'origin/poppler-0.20'

Conflicts:
	poppler/Form.cc
0.21.1
Parse the args (so that -v says vesion only)

Fixes bug #56817
Removed unused var
size can't be smaller than 0 because it's a size_t