Improve logging of YAML header errors

Improve logging based on review of swcarpentry/matlab-novice-inflammation/#4 testcase.

Specifically, if the sample file is missing some fields from the YAML header section, those fields should be explicitly named in an error message.

Additionally: If custom tests are added to the base validator, they should run last. That way common error messages appear in a more logical and predictable order.
Why this rather than:

1.  Extract the header as a single string.
2.  Run it through `yaml.load`.

See the function `fetch` in `bin/get_workshop_info.py` in http://github.com/swcarpentry/site for an example.