opc: refactor test_packaging to pytest
opc: extract opc.phys_pkg module
opc: transplant ZipPkgWriter from python-opc
opc: factor out ZipFileSystem.write_element()

* converted all calls to write_blob()
* removed write_element() method
* removed method-specific tests
opc: replace write_blob() with ZipPkgWriter.write()
opc: replace Partname with PackURI
opc: transplant PhysPkgReader
opc: add _DirPkgReader
opc: swap in PhysPkgReader

* replace FileSystem with PhysPkgReader
* remove replaced code
part: replace Part class with cls lookup
opc: transplant opc.pkgreader module
opc: open heart surgery to refactor prs.open()

Essentially this is transplanting the load side of python-opc into
python-pptx. Lots of stuff and couldn't find a ready way to break all
the coupling I introduced in the early days before I knew better :)
opc: reorder methods in Package
prs: extract Package.open() factory method

* Was previously logic in default constructor, complicating testing.
* reordered methods alphabetically in Package
* extracted _default_pptx_path property out to class var
prs: factor out related-part attrs to lazy-load

* Package._presentation
* Package._core_properties
* Package._images
rels: add RelationshipCollection.part_with_reltype()

* introduced lazyproperty decorator
* substantial cleanup in test_rels.py
prs: extract Package.after_unmarshal()
img: extract ImageCollection.load()
part: rename PartColl._load_part() to add_part()
opc: transplant PartFactory