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 and re-order methods to aid understanding of code

Move the `validate_array`, `validate_hash` and `check_*` methods to show
first in the private methods to highlight their importance.

The ConfigValidator::data variable will usually be either an array or a
hash, so most validations will call either `validate_array` or
`validate_hash`.

Also sort the `check_*` and other `validate_*` methods alphabetically
for clarity.
Explain recursion

Add Rubydoc comments to explain the recursive calls made in this class.
Merge pull request #56 from alphagov/71740686-document_config_validator

[#71740686] Document ConfigValidator