Introduce a factory method for image creation

Force the use of create() by making new() private.
Provide a PNM.create method
Move documentation from Image.create to PNM.create
Fix require statement in image test file

Now the test file can be run on its own.
Split array validation method
Rewrite array validation methods
Reorder image initialization

Move general validations and image type detection on top.
Extract method for type validation and sanitizing
Move basic validations into create() method
Reorder method definitions
Rewrite maxgray initialization
Extract color_pixels? method
Clarify type dependency and purpose of some assertions
Isolate type dependent code from header method
Extract methods
Introduce image subclasses

Basic setup of subclasses for different image types.
Move most type specific behavior into subclasses
Add post_initialize method

Used for type specific checks and conversions.
Release 0.4.0