Implement proof output

This patch add --proof option to output a proof version. If a positive value is specified, texts are drawn on both text layer and background image  for comparison. If  2 is specified, texts on background are in different colors, usually red for filling, blue for stroking.
Previously I did use `GfxState::copy()`, but found that I still need to reset a few properties, e.g. pattern, and creating a new one seemed simpler. Additionally,  `GfxState::copy()` also copies path, which is not necessary, choosing not to copy path leads to memory error, may be poppler's bug.