Support for directive explanations was added in #98 but it was only
being applied to TAP input, which created a blank explanation if one
was not provided. The results from tap-assert did not ensure the
explanation was a string, so "undefined" started popping up for TODO
and SKIP tests.
Also make sure we preserve assert.skip explanations if they are given,
since skipped tests don't get the same "clone extra" treatment that
other asserts do.