TextureIO: Support PNGTextureWriter w/ TextureData IntBuffer (via PNGPixelRect and PixelFormatUtil)

TextureData IntBuffer could be caused by AWT read-pixels
but is not seamlessly supported via PNGPixelRect since the latter
uses a hardcoded ByteBuffer.

Add static PNGPixelRect.write(..) supporting IntBuffer
to support this case for now.
PNGPixelRect instances do not support any Buffer type to avoid
a bloated implementation.

PixelFormatUtil adds support for int32 pixel format conversion.
Bug 962 - AWTGLReadBufferUtil should use aligned BufferedImage [for resized images]; Fix GLReadBufferUtil GL_PACK_ROW_LENGTH

AWTGLPixelBuffer is being reused when used via AWTGLPixelBufferProvider
even when resized.

AWTGLPixelBufferProvider uses  GLPixelBufferProvider's requiresNewBuffer(..)
which returns true if
  - allowRowStride==true and pixel-buffer size < required-size, or
  - allowRowStride==false and pixel-buffer size < required _or_ width doesn't match

otherwise it returns true, i.e. the AWTGLPixelBuffer is reused.

Hence the used BufferedImage might need to be aligned,
i.e. using AWTGLPixelBuffer's getAlignedImage(..).

+++

GLReadBufferUtil shall use current texture-data width for GL_PACK_ROW_LENGTH,
not the static GLPixelBuffer's width, which may not reflect image dimension (resize)

+++
TextureIO: Fix PNGTextureWriter Vertical-Flip, i.e. pass TextureData's getMustFlipVertically() to PNGPixelRect