Dead code removed (PagePrivate::modifyAnnotation)

The first if ("modified already") is always taken
Added AnnotationProxy to SaveInterface

Based on Pino Toscano's earlier work
Disable GUI operations on certain types of annotations

Modification and removal of *external* annotations are disabled by this
patch. Note that this change doesn't remove any functionality, because they
have never been implemented (AnnotationProxy is defined by the previous
patch).

The #if0'd blocks will be enabled by a future patch that provides fallback
behavior for generators that don't support saving changes.
Re-add restored annotations via Document so that AnnotationProxy gets notified

Previously, restored annotations followed a shorter path that bypassed AnnotationProxy
Do not store flag Annotation::ExternallyDrawn when exporting to DOM

It's an implementation detail
Use UUIDs intead of a (broken) counter to generate annotations' unique names

The previous counter-based approach didn't take into account existing names used
by external annotations and names used in other pages.
Instead of creating a document-global table of used names, I used random UUIDs
as a source of unique names.
poppler gen: Added checkbox to print/hide annotations in PDFOptionsPage
poppler gen: Moved PDFDebug constant into PDFGenerator class
poppler gen: AnnotationProxy implementation
poppler gen: Put new annotation features between #ifdef HAVE_POPPLER_0_20
Added Annotation::BeingMoved flag to avoid refreshing pixmaps while moving annotations
Render ExternallyDrawn annotations in PagePainter if they are BeingMoved
Only draw the bounding box of (ExternallyDrawn & BeingMoved) annotations
poppler gen: don't lie ;) We can't save changes if the document has /Encrypt
poppler gen: Added mutex protection to PopplerAnnotationProxy
Enable edit/removal of external annotations if the generator supports it
Fallback behavior for documents whose generator provides native annotation editing support without saveAs support

The only affected generator is poppler. Note that:
Document has /Encrypt <=iff=> SaveInterface supportsOption(SaveChanges) is false

This patch enforces the following behavior (and warns the user the first time
he edits an annotation).

- If the document has /Encrypt, warn that "Save as" is not available, but it's
possible to export as okular archive. New annotations will be automatically
saved to XML as usual.
Note that the previous patch already made all existing annotations uneditable,
because there's no way to save them.

- If the document has no /Encrypt and there are existing external annotations,
warn that changes won't be saved automatically. The user needs to "Save as" or
changes will be lost.

- If the document has no /Encrypt and there aren't existing external
annotations, don't show any warning. New annotations will be automatically saved
to XML as usual and to file if "Save as" is pressed.
try to cache the rendered page to see if zooming speed improves
CMakeLists: Install saveinterface.h
better decision on when turn the page