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.