Introduce the unittest module

This new 'unittest' module is intended to support the creation of test
programs using an interface similar to that of JUnit-like frameworks.

At the moment, all this module allows is defining simple test cases
without support for fixtures and has no assert-style functions other
than the explicit "fail" call.  These extra features will all be added
separately.
Add support for skip tests to unittest
Add support for test fixtures

Fixtures are sets of related test cases that share some common setup and
teardown code.

Because the shell does not have scoping for nested functions, and because
we lack the equivalent of classes, we play some tricks to emulate the
common syntax found in JUnit-like libraries.