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.
We should use the `yaml` library.  For one, it's simpler (see this code from the `site` repository tools at https://github.com/swcarpentry/site/blob/master/bin/get_workshop_info.py):

~~~
    pieces = response.text.split('---')
    if len(pieces) < 2:
        fail('Malformed YAML header in {0}', url)
    info = yaml.load(pieces[1])
~~~

For another, it's consistent with what we do in the website and elsewhere: we're using the YAML library there, so using it here will guarantee the same behavior.