vtkPNGReader MemoryBuffer support and other improvements
- This adds support for MemoryBuffer in the vtkPNGReader as specified in vtkImageReader2.
- This also modernizes and reorganizes parts of the class.
- This also adds tests for using the class to read from a png file and from the MemoryBuffer