Normalize negative nanosecond values in stat_struct_to_py()

Turns sane negative nanosecond values into positive nanosecond values for
systems which use them (such as Cygwin). This allows correct bup operation.

Systems which return garbage values will still (correctly) be identified
and fail in testing.

Signed-off-by: Will Rouesnel <w.rouesnel@gmail.com>
Correct a bug in testpacks which causes tests to fail on Cygwin.

testpacks did not set the BUP_MAIN_EXE and BUP_DIR environment variables
before invoking git.PackWriter(), which caused the wvtest to be run
looking for the wrong files.

This is a Cygwin-specific problem, but the all other tests in this series
set these environment variables before running any other logic, but under
Cygwin the environment does not get preserved between tests.

Signed-off-by: Will Rouesnel <w.rouesnel@gmail.com>
Added cygwin-special case code to tindex symlink test.

On Cygwin this test will currently fail since sample data doesn't unpack
to a proper symlink. This kills all the other tests from running.

Since this is a Cygwin-specific issue, and people should generally be aware
of issues surrounding symlinks in the Cygwin environment, this test is
disabled to provide for a clean test run for now.
Don't store test data directly in Git tree under t/sampledata

* Remove t/sampledata from source-control.
* Add the t/generate-test-data.sh to generate test data on demand.
* Add make testdata build target.
* Change the tindex.py tests to to use /tmp rather then /etc for a
directory symlink.

The t/sampledata tree is problematic to store in the Git source
tree because it contains a number of symlinks used for testing,
howevever Git's support for symlinks varies between files and
directories, and across platforms (Windows defaults symlink support to
off, even on Cygwin).

The generate-test-data.sh script instead runs as part of testsuite and
produces correct test data on demand, avoiding Git-specific issues with
the test data.

The tindex.py symlink test is altered point to /tmp rather then /etc.
Pointing to /etc runs the danger of a user damaging their configuration
through some misfortune, whereas /tmp is intended to be replaceable
data. Git's directory symlink handling is also a concern here - Git can
end up trying to check in the entire contents of /etc.
stat_struct_py() readability improvements

The negative nanosecond normalization code is moved to the inline
function normalize_stat_time().