Refactor initialize_pdfminer

This is an attempt to hide away pdfminer details so you don't need to care about ``doc, interpreter, device`` etc any more. This allows you to go
```
pdf = PDFDocument(file_handle)
for page in pdf.get_pages():
    page_contains_tables(page)
```
and so on...