img: add _App1Marker.from_stream()
img: add _App1Marker._tiff_from_exif_segment()
img: add _App1Marker.horz_dpi and .vert_dpi
acpt: add additional Exif example
refac: introduce BaseImageHeader base class
refac: introduce _ImageHeaderFactory()

* replaces image_cls_that_can_parse()
* All image header classes now inherit from BaseImageHeader rather than
Image
* changes X_ImageHeader.from_stream() signature, removing blob and
filename parameters
* Image gets .content_type, horz_dpi, and vert_dpi as direct properties
now they are no longer provided by subclasses
refac: condense DescribeJpeg test class

Make DescribeExif and DescribeJfif interior classes so they can share
common fixtures
img: add GIF support
img: add BMP support
img: close test coverage gaps in docx.image
img: refactor Png.from_stream()
img: add _PngParser.parse()
img: add _Chunks.from_stream()
img: add _ChunkParser.from_stream()
img: add _ChunkParser.iter_chunks()
img: add _ChunkParser._iter_chunk_offsets()
img: add _ChunkFactory()
img: add _IHDRChunk
img: add _pHYsChunk
img: add _Chunk