Re-order methods to clarify execution order

Place the class method `self::validate` before `initialize` to make
it clearer that this class is initialised by calling `self::validate`.

I also wanted to move `valid?` to be after the `validate` instance
method, but the `private` scoping keyword prevents me from doing that;
`valid?` must be public.
Add Rubydoc comments to clarify usage

Add Rubydoc comments to help clarify the execution order of this class.
Sort validate_ and check_ methods alphabetically

Sort the validate_* and, separately, the check_* methods alphabetically.