Redmine #4607: Implement support for additional test outcomes.

Implements support for the three test outcomes:
  - Skipped/unsupported: Happens when the underlying platform doesn't
    (and can never) support a feature (e.g. symlinks on Windows).
  - Skipped/needs work: Happens when a test is skipped because the
    test itself is carried out incorrectly on that platform.
  - Suppressed fail: Happens when a test receives a failure result,
    but without stopping the build. This is meant to be used when
    there is a real bug, but we are willing to tolerate it at the
    moment.

In each test you specify one of them like this:

<pre>
  bundle agent test
  {
    meta:
      # Class expression giving platforms that should be skipped.
      "test_skip_unsupported" string => "hpux";
  }

  bundle agent test
  {
    meta:
      # Class expression giving platforms that should be skipped
      "test_skip_needs_work" string => "hpux";
  }

  bundle agent test
  {
    meta:
      # Class expression giving platforms where we suppress a failure.
      "test_suppress_fail" string => "hpux",
        meta => { "redmine1234" };
  }
</pre>

which will be picked up by the test framework automatically.