.gitignore all names with "~"

The exclusion of "~" is extended to anywhere in a name, preventing any
collisions with Windows via short file names.
Move test harness from dfutil to dftest

The 'dftest' program is the new home of the test harness for running
data tests (those which are invoked from .test files), in addition to
plain tests (those which require no data files, and can be run simply by
calling their corresponding function).

Usage is as follows:

dftest path1 path2 ...

    Run a series of automated tests, consisting of all the .test files
    in the specified path(s). If only one file is found, the test is run
    and the result is printed to standard output. If multiple files are
    found, they are all run, and their pass/fail status is printed.

dftest -diff path1 path2 ...

    As above, but for each test that fails, print out a diff between the
    expected and actual results.

dftest -plain

    Run all tests functions of type PlainTest, which don't use any data
    files