Make pdf_document.PDFDocument into an ABC

This moves the existing PDFDocument to pdf_document_pdfminer.

Motivation is to prepare for:

* having alternative backends
* making a reasonably clean and strict interface to the underlying document