Testing framework improvements

- Split the test finding and selecting code out into a separate module,
  findtests.py (and rewrite it completely in the process.)

- Add support for encoding some basic information in comments at the top
  of tests files.  Currently supported is

    # @dependency (none|<path>)

  for explicitly specifying what other tests a test depends on, and

    # @flag <flag>

  for, well, setting flags.  The only flag with any meaning right now is
  "local" (more on that below.)

  In addition to reading the test file itself, an __init__.py file in a
  test directory can be used to set information shared by all tests in
  that directory and its sub-directories.

- Add unit testing support.  No actual unit tests added.

- Improve test selection argument interpretation.  Those arguments can now
  have a testing/tests/ prefix, which means tab completion can be used
  when specifying tests to run.

- Improve --pause-before / --pause-after interpretation.  They can now be
  patterns, interpreted in a similar fashion to the test selection
  arguments.  In particular, the pattern '*' can be used to pause before
  and/or after each selected test.  (Beware of the shell expanding such a
  command line argument, though.)

  The arguments can still also be used to specify pausing before or after
  a group (i.e. directory) of tests.

- Add support for running some tests locally without installing Critic
  first, by supplying the --local argument.  This will obviously only work
  for very few tests (typically unit tests.)  Those that support it need
  to have

    # @dependency none
    # @flag local

  to be selected.