Support pngs with < 8 bit per pixel

Also added general support for Grey(n) for n in {1, 2, 4} by simply upscaling the data. Fixes #70.

Just making a pull request since I'm unsure about our policy concerning unsafe blocks.