Improvement of tests for unimplemented functionality

At the moment there are two ways how to handle the situation when certain functionality is implemented for some platforms only:

  1. Leave the test failing.
  2. Skip the test (don't check anything and return success), optionally logging a explanation (which is actually silently discarded by test runner).

Neither option is good. I am proposing a different solution that would allow us to clearly distinguish test for missing functionality, i.e. answering the following questions:
  1. Which tests are failing because of missing platform-specific implementation?
  2. Why is the functionality missing (short explanation next to the failing test).

The solution is based on TAP directives SKIP and TODO - see [this page](http://podwiki.hexten.net/TAP/TAP.html?page=TAP#DIRECTIVES) for more details.

The code in test/runner.c is not finished yet, it will require some polishing. Also Windows version of process_read_last_line() is not implemented yet.

@tjfontaine Could you please run this PR on build server, so that we can see how TAP runner handles SKIP and TODO directives?

@bnoordhuis @piscisaureus What do you thing about this solution? Is it something you would accept into libuv and use in your tests?